1. 什么是線程?
2. 什么是線程安全和線程不安全?
3. 什么是自旋鎖?
4. 什么是Java內存模型?
5. 什么是CAS?
6. 什么是樂觀鎖和悲觀鎖?
7. 什么是AQS?
8. 什么是原子操作?在Java Concurrency API中有哪些原子類(atomic classes)?
9. 什么是Executors框架?
10. 什么是阻塞隊列?如何使用阻塞隊列來實現生產者-消費者模型?
11. 什么是Callable和Future?
12. 什么是FutureTask?
13. 什么是同步容器和並發容器的實現?
14. 什么是多線程?優缺點?
15. 什么是多線程的上下文切換?
16. ThreadLocal的設計理念與作用?
17. ThreadPool(線程池)用法與優勢?
18. Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。
19. synchronized和ReentrantLock的區別?
20. Semaphore有什么作用?
21. Java Concurrency API中的Lock接口(Lock interface)是什么?對比同步它有什么優勢?
22. Hashtable的size()方法中明明只有一條語句”return count”,為什么還要做同步?
23. ConcurrentHashMap的並發度是什么?
24. ReentrantReadWriteLock讀寫鎖的使用?
25. CyclicBarrier和CountDownLatch的用法及區別?
26. LockSupport工具?
27. Condition接口及其實現原理?
28. Fork/Join框架的理解?
29. wait()和sleep()的區別?
30. 線程的五個狀態(五種狀態,創建、就緒、運行、阻塞和死亡)?
31. start()方法和run()方法的區別?
32. Runnable接口和Callable接口的區別?
33. volatile關鍵字的作用?
34. Java中如何獲取到線程dump文件?
35. 線程和進程有什么區別?
36. 線程實現的方式有幾種(四種)?
37. 高並發、任務執行時間短的業務怎樣使用線程池?並發不高、任務執行時間長的業務怎樣使用線程池?並發高、業務執行時間長的業務怎樣使用線程池?
38. 如果你提交任務時,線程池隊列已滿,這時會發生什么?
39. 鎖的等級:方法鎖、對象鎖、類鎖?
40. 如果同步塊內的線程拋出異常會發生什么?
41. 並發編程(concurrency)並行編程(parallellism)有什么區別?
42. 如何保證多線程下 i++ 結果正確?
43. 一個線程如果出現了運行時異常會怎么樣?
44. 如何在兩個線程之間共享數據?
45. 生產者消費者模型的作用是什么?
46. 怎么喚醒一個阻塞的線程?
47. Java中用到的線程調度算法是什么
48. 單例模式的線程安全性?
49. 線程類的構造方法、靜態塊是被哪個線程調用的?
50. 同步方法和同步塊,哪個是更好的選擇?
51. 如何檢測死鎖?怎么預防死鎖?
52. ConcurrentModificationException 異常原因?
會逐步更新答案.....