0
我有一個使用生產者和消費者模式的代碼。當生產者產生一些數據對象時,將它們放入一個阻塞隊列中,消費者從隊列處理中消耗數據對象並將其發送到另一個類別Java生產者消費模式線程
生產者 - >阻塞隊列(數據對象)< - 消費者 - 解析器 - >其他應用程序
現在生成器生成的速率可能會有所不同,這意味着數據對象排隊可能會發生變化。
處理消費者需要在線程中運行的隊列中的所有數據對象。
現在我的要求是有大量的數據對象入隊我正在將消費者線程增加到預定義的數字,以便數據對象及時處理,但是當數據隊列數量較少/隊列中的數據減少我想減少線程也。
總之,我想根據隊列的大小來改變線程的數量。什麼是我可以實現這一目標的最佳方式。
您在研究中發現了什麼?你已經嘗試過哪些選擇?有什麼結果?你在執行過程中遇到了問題嗎(在這種情況下,發佈關於你的實現的具體問題)還是結果不滿足你? – brimborium
考慮使用java.util.concurrentThreadPoolExecutor而不是使用顯式創建的隊列和顯式創建的線程。 'ThreadPoolExecutor'自動調整給定'corePoolSize'和給定'maximumPoolSize'之間的工作線程數量。 –
使用java.util.concurrentThreadPoolExecutor工作 – Avishek