D. Java Multi-Threading and Conc
1.线程和进程的区别?
2.多线程程序的好处有哪些?
3.线程和后台线程有什么区别?
a
4.如何创建线程?
a
5.线程生命周期里线程状态有哪些?
a
6.能否调用线程类的run方法?
a
7.如何在确定的时候停止执行的线程?
a
8.线程优先级如何理解?
a
9.什么是定时线程和时间分片?
a
10.什么是多线程里的上下文切换?
a
11.如何确定Java程序里main()是最后一个完成的线程?
a
12.线程间交互是如何完成的?
a
13.为什么线程交互的方法wait(),notify()和notifyAll()是在Object类里?
a
14.为什么线程交互的方法wait(),notify()和notifyAll()必须从synchronized方法或block里调用?
a
15.为什么线程的sleep()和yield()方法是静态的?
a
16.Java如何实现线程安全?
a
17.volatile关键词的用途是什么?
a
18.Synchronized方法和Synchronized代码块应该如何优先选?
a
19.如何创建后台线程?
a
20.ThreadLocal是什么?
21.线程组是什么?为何建议不适用它?
22.什么是线程Dump?如何Dump Java程序的线程?
23.什么是死锁?如何分析和避免死锁情况?
24.Timer类是什么?如何执行定时任务?
25.线程池是什么?如何创建线程池?
26.如果不重写Thread类的run()方法会发生什么?
27.什么是原子操作?Java多线程API中原子类有哪些?
28.Java多线程API中Lock接口是什么?它优于synchronization的好处是什么?
29.线程框架是什么?
30.BlockingQueue是什么?如何通过BlockingQueue实现生产-消费模型?
阅读文章producer-consumer problem implementation using BlockingQueue。
31.Callable和Future是什么?
32.FutureTask类是什么?
阅读文章Java FutureTask Example学习如何使用和了解其不同方法。
33.什么是线程集合类?
阅读文章how to avoid ConcurrentModificationException when using iterator。
34.Executors类是什么?
a
35.Java8多线程API中有什么改进?
一些多线程API的增强如下:
∆ ConcurrentHashMap的compute(), forEach(), forEachEntry(),forEachKey(), forEachV alue(), merge(), reduce() and search()方法;
∆ CompletableFuture可能明确的完成(设置值和状态);
∆ Executors的newWorkStealingPool()方法来创建work-stealing线程池,根据目标并行级别来使用所有可用的CPU处理器。