【全网最全最详细】Java并发编程 面试题(上)

目录

一、什么是多线程的上下文切换?

二、如何减少上下文切换?

三、能不能谈谈你对线程安全的理解?

四、什么是并发与并行?

五、进程与线程的区别?

六、线程有几种状态?状态之间的流转是怎样的?

七、WAITING和TIMED_WAIT的区别?

八、什么是守护线程?和普通线程有什么区别?

九、JDK21中虚拟线程是什么回事?

十、创建线程有几种方式?

十一、Runnable和Callable的区别?

十二、start方法与run方法的区别?

十三、sleep与wait的区别?

十四、notify和notifyAll区别?

十五、如何创建线程池?

十六、线程数设定多少合适?

CPU 核数

应用类型

JVM 和系统资源

其他考虑

十七、什么是ThreadLocal?如何实现的?

十八、线程的同步方式有哪些?

synchronized

ReentrantLock

Semaphore

CountDownLatch

CyclicBarrier

Phaser

十九、什么是死锁?如何解决?

二十、并发编程中的原子性和数据库ACID的原子性一样吗?

二十一、synchronized是怎么实现的?

二十二、什么是Monitor?

二十三、synchronized锁的是什么?

二十四、synchronized是如何保证原子性、可见性、有序性的?

保证原子性

保证有序性

保证可见性

二十五、synchronized的锁升级过程?

无锁

偏向锁(Biased Locking)

轻量级锁(Lightweight Locking)

重量级锁(Heavyweight Locking)

二十六、synchronized锁升级过程有几次自旋?

二十七、synchronized的锁优化是怎样的?

自旋锁

锁消除

锁粗化

二十八、Volatile能保证原子性吗?为什么?

二十九、如何实现原子性的自增?

三十、int a = 1是原子性操作吗?

三十一、volatile是如何保证可见性和有序性的?

volatile可见性

volatile有序性

三十二、有了synchronized为什么还需要volatile?

三十三、什么是CAS?存在什么问题?

存在问题

ABA问题

忙等待

三十四、CAS一定有自旋吗?

三十五、什么是Unsafe?

三十六、CAS在操作系统层面是怎么保证原子性的?

三十七、synchronized和ReentrantLock的区别?

三十八、公平锁和非公平锁的区别?

三十九、LongAdder和AtomicLong的区别?

四十、说说AtomicLong的实现原理

四十一、说说LongAddr的实现原理

四十二、LongAdder为什么可能会不准确?

四十三、CountDownLatch、CyclicBarrier、Semaphore区别?

四十四、父子线程之间怎么共享/传递数据?

自己传递

InheritableThreadLocal

四十五、上面你说父子线程间共享数据,那为什么不用ThreadLocal呢?

四十六、如何对多线程进行编排?

四十七、如何保证多线程下i++结果正确?

四十八、Thread.sleep(0) 的作用是什么?

四十九、什么是总线嗅探和总线风暴,和JMM有什么关系?

五十、CompletableFuture的底层是如何实现的?


一、什么是多线程的上下文切换?

上下文切换是指CPU从一个线程转到另一个线程时,需要保存当前线程的上下文状态,恢复另一个线程的上下文状态,以便于下一次恢复执行该线程时能够正确地运行。

在多线程编程中,上下文切换是一种常见的操作,上下文切换通常是指在一个CPU上,由于多个线程共享CPU时间片,当一个线程的时间片用完后,需要切换到另一个线程运行。此时需要保存当前线程的状态信息,包括程序计数器、寄存器、栈指针等,以便下次继续执行该线程时能够恢复到正确的执行状态。同时,需要将切换到的线程的状态信息恢复,以便于该线程能够正确运行。

在多线程中,上下文切换的开销比直接用单线程大,因为在多线程中,需要保存和恢复更多的上下文信息。过多的上下文切换会降低系统的运行效率,因此需要尽可能减少上下文切换的次数。

二、如何减少上下文切换?

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神农尝百码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值