1、创建多线程的方式有几种
2、如何实现业务拆分成多线程并发执行,最后合并?
3、描述线程的周期和各种状态的转换
4、start和run的区别
5、关闭一个线程有几种方式,哪种方法比较优雅
6、sleep、wait、yield三种方法的区别?
7、join方法有何作用
8、实现多线程同步的几种关键字或方式,说出他们区别。
9、多线程并发的三大特性是什么?
10、线程池的概念?java提供的线程池包如何创建线程池?简单描述种类和区分,如何创建。
11、当线程池过大线程池应当如何处理?
12、什么是HOOK钩子线程?
13、线程之间是如何通信的?
14、描述一下多线程的生产消费模式?
15、死锁的原因、类型、如何避免?
16、线程如何拿到返回结果?
17、为什么要使用线程池?
18、线程池的submit和execute启动线程的区别?
19、Fork/Join框架的作用?
20、线程安全的数据类型和集合有哪些?
21、保证“可见性”有哪些方式?
22、Thread.sleep(0)有什么用?
23、JVM内存模型哪些是线程共享,哪些是私有的?
24、什么是悲观锁什么是乐观锁?
25、ThreadLocal是什么?有什么应用场景?
26、FutureTask是什么?
27、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
28、什么是Future, FutureTask?
29、Java中堆和栈有什么不同?
30、编写一个生产消费者的java案例
31、编写一个死锁的java案例
32、怎么检测一个线程是否拥有锁?