在准备面试的时候,是必学的(特别是校招),我记录过我曾经真实遇见过的多线程面试题,这里给大家分享一下。
1、多线程了解多少啊?使用多线程会有什么问题?你是怎么理解“线程安全”的?
2、如果我现在想要某个操作等待线程结束之后才执行,有什么方法可以实现?为什么要用CountDownLatch?CountDownLatch的底层是什么?(引出AQS)
3、synchronized关键字来说一下,它的用途是什么?synchronized底层的原理是什么?
4、线程安全的容器有哪些?(着重于ConcurrentHashMap、CopyWriteOnArrayList与其他非线程安全容器的区别以及它们的具体实现)
5、ThreadLocal你了解过吗?主要是用来干什么的?具体的源码实现原理来说一下吧
6、产生死锁的条件是什么?我们可以如何避免死锁?(可延伸到操作系统层面上的死锁)
7、synchronized锁和ReentrantLock锁有什么区别呀?
8、线程池你应该也看过吧,来说说为什么要用线程池。JDK默认实现了几个线程池,分别有xxx(自然地ThreadPoolExecutor构造函数的常用几个参数你也得一起说出来)https://www.bilibili.com/video/BV1N3411W7BT/https://www.bilibili.com/video/BV1N3411W7BT/