java並發麵試題(二)實戰
本文列出了在工作中會用到的並發編程的實戰問題,大家可以一起交流下,在回複中給出答案。
並發容器和框架
- 如何讓一段程序並發的執行,並最終匯總結果?
- 如何合理的配置java線程池?如CPU密集型的任務,基本線程池應該配置多大?IO密集型的任務,基本線程池應該配置多大?用有界隊列好還是無界隊列好?任務非常多的時候,使用什麼阻塞隊列能獲取最好的吞吐量?
- 如何使用阻塞隊列實現一個生產者和消費者模型?請寫代碼。
- 多讀少寫的場景應該使用哪個並發容器,為什麼使用它?比如你做了一個搜索引擎,搜索引擎每次搜索前需要判斷搜索關鍵詞是否在黑名單裏,黑名單每天更新一次。
Java中的鎖
- 如何實現樂觀鎖(CAS)?如何避免ABA問題?
- 讀寫鎖可以用於什麼應用場景?
- 什麼時候應該使用可重入鎖?
- 什麼場景下可以使用volatile替換synchronized?
並發工具
- 如何實現一個流控程序,用於控製請求的調用次數?
答案
可以閱讀以下參考資料,知道答案後可以在回複中交流
- Java線程池的分析和使用 Java線程池(第二題)
- 原子操作的實現原理 (鎖 第一題)
- Java中的讀寫鎖(鎖 第二題)
- 如何設計客戶端流控程序 (並發工具 第一題)
- 待續
文章轉自 並發編程網-ifeve.com
最後更新:2017-05-22 20:04:18