精选30道Java多线程面试题
1、线程和进程的区别
2、实现线程有哪几种方式?
3、线程有哪几种状态?它们之间如何流转的?
4、线程中的start()和run()方法有什么区别?
5、怎么终止一个线程?如何优雅地终止线程?
6、ThreadLocal在多线程中扮演什么角色?
7、线程中的wait()和sleep()方法有什么区别?
8、多线程同步有哪几种方法?
9、什么是死锁?如何避免死锁?
10、多线程之间如何进行通信?
11、线程怎样返回结果?如何获取?
12、说说violatile关键字有什么用,和Synchronized有什么区别?
13、假如新建T1、T2、T3三个线程,如何保证它们按顺序执行?
14、怎么控制同一时间只有3个线程运行?
15、为什么要使用线程池?
16、说一说常用的几种线程池并讲讲其中的工作原理。
17、线程池启动线程submit()和execute()有什么不同?
18、说说多线程并发控制中的倒计时器、循环栅栏是什么,有什么应用场景?
19、什么是活锁、饥饿、无锁、死锁?
20、什么是原子性、可见性、有序性?
21、什么是守护线程?有什么用?
22、怎么中断一个线程?如何保证中断业务不影响?
23、yield()方法有什么用?
24、什么是重入锁,和Synchronized锁有什么区别?
25、Synchronized有哪几种用法?
26、Fork/Join框架是干什么的?
27、如何给线程传递参数?
28、说说线程安全的和不安全的集合。
29、什么是CAS算法?在多线程中有哪些应用。
30、你遇到过哪些多线程的问题?都是如何解决的?
之前的文章分享了很多关于多线程方面的知识,现在可以考验下大家多线程的功力了。这里不一一给出答案,上面有些没有讲过的点大家可以自行学习,也可以关注公众号以后的文章。