我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()
似乎不是最好的方式。任何建议如何实现这一点?