查看原文
其他

精选30道Java多线程面试题

2017-07-23 javastack 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、你遇到过哪些多线程的问题?都是如何解决的?


之前的文章分享了很多关于多线程方面的知识,现在可以考验下大家多线程的功力了。这里不一一给出答案,上面有些没有讲过的点大家可以自行学习,也可以关注公众号以后的文章。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存