如何令java线程池中线程超过5分钟时该线程自杀

如题所述

应该是没有这个功能的,因为线程池里面的线程实际上是复用的,即执行完一个Job以后会从Quenue(任务队列)里面取新的JOB。如果有这样的需求可以:1)控制JOB的执行时间不能太长,否则可能会造成阻塞;2)在JOB的实现(run方法)里面做相应的控制;3)如果JOB有长时间和短时间两种模式,可以考虑放在两个线程池中,避免长时间的任务阻塞短时间的任务;4)也可以控制等待队列的任务个数,但是Executors默认的Factory方法是没有这个参数的,需要直接newThreadPoolExecutor
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-29
利用System.currentTimeMillies等计时,到时间就终止
第2个回答  2014-11-29
public void run() {
while (true) {
if (Thread.currentThread().isInterrupted()) {
return;
}
// do something
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}

如果线程任务是这种形式,使用thread.Interrupt 的方法来打断thread, 从而结束该thread的生命周期。本回答被提问者和网友采纳
相似回答