面试题之多线程(并发编程)

1、进程和线程的区别?
2、什么是原子性、可见性、有序性?
3、为什么要使用多线程?
4、创建线程有哪几种方式?
5、什么是守护线程?
6、线程的状态有哪几种?怎么流转的?
7、线程的优先级有什么用?
8、我们常说的 JUC 是指什么?
9、i++ 是线程安全的吗?
10、join 方法有什么用?什么原理?
11、如何让一个线程休眠?
12、启动一个线程是用 start 还是 run 方法?
13、start 和 run 方法有什么区别?
14、sleep 和 wait 方法有什么区别?
15、Thread.yield 方法有什么用?
16、yield 和 sleep 有什么区别?
17、怎么理解 Java 中的线程中断?
18、你怎么理解多线程分组?
19、你怎么理解 wait、notify、notifyAll?
20、同步和异步的区别?
21、什么是死锁?
22、怎么避免死锁?
23、什么是活锁?
24、什么是无锁?
25、什么是线程饥饿?
26、什么是 CAS?
27、阻塞和非阻塞的区别?
28、并发和并行的区别?
29、为什么不推荐使用 stop 停止线程?
30、如何优雅地终止一个线程?
31、Synchronized 同步锁有哪几种用法?
32、什么是重入锁(ReentrantLock)?
33、Synchronized 与 ReentrantLock 的区别?
34、synchronized 锁的是什么?
35、什么是读写锁?
36、公平锁和非公平锁的区别?
37、有哪些锁优化的方式?
38、什么是偏向锁?
39、什么是轻量级锁?
40、什么是自旋锁?
41、什么是锁消除?
42、什么是锁粗化?
43、什么是重量级锁?
44、什么是线程池?
45、使用线程池有什么好处?
46、创建一个线程池有哪些核心参数?
47、线程池的工作流程是怎样的?
48、Java 里面有哪些内置的线程池?
49、为什么阿里不让用 Executors 创建线程池?
50、线程池的拒绝策略有哪几种?
51、如何提交一个线程到线程池?
52、线程池 submit 和 execute 有什么区别?
53、如何查看线程池的运行状态?
54、如何设置线程池的大小?
55、如何关闭线程池?
56、AQS 是什么?
57、AQS 的底层原理是什么?
58、Java 中的 Fork Join 框架有什么用?
59、ThreadLocal 有什么用?
60、ThreadLocal 有什么副作用?
61、volatile 关键字有什么用?
62、volatile 有哪些应用场景?
63、CyclicBarrier 有什么用?
64、CountDownLatch 有什么用?
65、CountDownLatch 与 CyclicBarrier 的区别?
66、Semaphore 有什么用?
67、Exchanger 有什么用?
68、LockSupport 有什么用?
69、Java 中原子操作的类有哪些?
70、什么是 ABA 问题?怎么解决?
71、Java 并发容器,你知道几个?
72、什么是阻塞队列?
73、阻塞队列有哪些常用的应用场景?
74、Java 中的阻塞的队列有哪些?
75、什么是幂等性?


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍