1. Java 线程池?
- 池化思想
- 线程池的使用方式
- 同步队列 & 线程工厂 & 拒绝策略
2. 守护线程与非守护线程?
3. notify() 与 wait() 的使用?
wait()方法必须在当前获取的锁对象上调用- 如何让等待的线程被重新唤醒,然后从
wait()方法返回?答案是在相同的锁对象上调用notify()方法
4. 线程池中 submit() 和 execute() 方法有什么区别?
submit方法可以获取到任务返回值或任务异常信息,execute方法不能获取任务返回值和异常信息。
5. synchronized 原理及锁升级?
6. 线程中断的作用?
7. AQS框架、ReentrantLock、countDownLatch 的实现原理?
8. ThreadLocal 的原理?
- Thread 对象里存储有 ThreadLocalMap
- ThreadLocalMap 是一个哈希表,key 是 threadLocal 实例,value 是共享变量的副本
- 注意 ThreadLocal 使用完后要进行 remove,否则 value 值还可能会存在内存泄漏
- 实现原理直接阅读 Java 源码就可以了