亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要有關Java線程池執行隊列處理的建議

需要有關Java線程池執行隊列處理的建議

Helenr 2021-04-09 14:11:46
在我的應用程序中,我們有許多客戶數據庫,每個小時我們都會獲得新數據以在該數據庫中進行處理有一個cron可以從該數據庫中檢查數據并提取數據并然后創建線程池并開始并行執行30個線程,其余線程存儲在隊列中處理所有線程需要幾個小時因此,在執行過程中,如果有新數據到達,則必須等待,因為該cron直到當前執行尚未完成之前,才會拾取這些新到達的數據。有時我們需要處理優先級數據,但是由于這種情況,客戶還需要等待幾個小時來處理其數據。請給我建議避免對新到達的數據進行此等待狀態(我正在使用Java 1.7,tomcat7和SQL server2012)預先謝謝您,如果不清楚,請告訴我有關此的更多信息
查看完整描述

3 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您可以使用 ExecutorService newCachedThreadPool()

使用緩存的線程池的好處:

該池在需要時創建新線程,但在可用時重用以前構造的線程。

僅當沒有可用的線程可重復使用時,才會創建新線程并將其添加到池中。

未使用超過六十秒的線程將終止并從緩存中刪除。因此,未使用足夠長時間的池將不會消耗任何資源。


查看完整回答
反對 回復 2021-04-21
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

您的每個線程都應批量處理數據(例如100/1000條記錄),并且應按優先級從DB中選擇此記錄。每次您選擇新記錄以處理優先級最高的數據時,都將排在第一位。



查看完整回答
反對 回復 2021-04-21
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

對于這個問題,我們正在考慮兩種解決方案

  1. 創建多個線程池,以處理普通和高優先級數據。

  2. 使用相同的代碼創建一個以上的tomcat實例,以處理普通數據和優先級數據

但是我不知道哪種解決方案最適合我的情況1或2

請給我有關上述解決方案的建議,以便我可以做出決定


查看完整回答
反對 回復 2021-04-21
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號