我havea線程池的5,這是我保持陣列固定的一生:OSGi的線程從未停止運行,定義線程
private static final Collection<Thread> workerThreads = new ArrayList<Thread>();
但是,當我重新上傳我的OSGi的插件,線程繼續運行,但陣列將是空的,所以它將被填充新的5個線程。所以最終我有大量的線程在運行。
我的線程池的設計一直運行下去,他們僅僅停留閒置,等待作業進入隊列。
while (!queue.isEmpty()) {
try {
Job takenJob = queue.poll(5000, TimeUnit.MILLISECONDS);
if (takenJob != null) {
takenJob.execute();
}
} catch (InterruptedException e) {
log.error("ERROR", e);
}
}
所以基本上問題是,我重新上傳我的osgi項目後,我會失去對舊線程的引用。
可能的解決方案:我需要定義線程一輩子,所以我沒有游泳池,但每個線程都住〜15分鐘,然後結束。與此同時,每15分鐘創建一個新線程,因此我總是會有一些線程正在查看隊列。
只使用標準java.util.DategetTime()
似乎不是最好的方式。任何建議如何實現這一點?