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

智慧大石
TA貢獻1946條經驗 獲得超3個贊
您可以使用 ExecutorService newCachedThreadPool()
使用緩存的線程池的好處:
該池在需要時創建新線程,但在可用時重用以前構造的線程。
僅當沒有可用的線程可重復使用時,才會創建新線程并將其添加到池中。
未使用超過六十秒的線程將終止并從緩存中刪除。因此,未使用足夠長時間的池將不會消耗任何資源。

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
您的每個線程都應批量處理數據(例如100/1000條記錄),并且應按優先級從DB中選擇此記錄。每次您選擇新記錄以處理優先級最高的數據時,都將排在第一位。

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
對于這個問題,我們正在考慮兩種解決方案
創建多個線程池,以處理普通和高優先級數據。
使用相同的代碼創建一個以上的tomcat實例,以處理普通數據和優先級數據
但是我不知道哪種解決方案最適合我的情況1或2
請給我有關上述解決方案的建議,以便我可以做出決定
添加回答
舉報
0/150
提交
取消