Java面試題-並發容器和架構

來源:互聯網
上載者:User

標籤:

1. 如何讓一段程式並發的執行,並最終匯總結果?
 答:使用CyclicBarrier 和CountDownLatch都可以,使用CyclicBarrier 在多個關口處將多個線程執行結果匯總,CountDownLatch 在各線程執行完畢後向匯流排程彙報結果。

2. 如何合理的配置java線程池?如CPU密集型的任務,基本線程池應該配置多大?IO密集型的任務,基本線程池應該配置多大?用有界隊列好還是無界隊列好?任務非常多的時候,使用什麼阻塞隊列能擷取最好的輸送量?
 答:1)配置線程池時CPU密集型任務可以少配置線程數,大概和機器的cpu核心數相當,可以使得每個線程都在執行任務
        2)IO密集型時,大部分線程都阻塞,故需要多配置線程數,2*cpu核心數
        3)有界隊列和無界隊列的配置需區分業務情境,一般情況下配置有界隊列,在一些可能會有爆發性增長的情況下使用無界隊列。
        4)任務非常多時,使用非阻塞隊列使用CAS操作替代鎖可以獲得好的輸送量。

3. 如何使用阻塞隊列實現一個生產者和消費者模型?

4. 多讀少寫的情境應該使用哪個並發容器,為什麼使用它?比如你做了一個搜尋引擎,搜尋引擎每次搜尋前需要判斷搜尋關鍵詞是否在黑名單裡,黑名單每天更新一次。
 答:1)CopyOnWriteArrayList這個容器適用於多讀少寫…
        2)讀寫並不是在同一個對象上。在寫時會大面積複製數組,所以寫的效能差,在寫完成後將讀的引用改為執行寫的對象

Java面試題-並發容器和架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.