如何为Executors.newFixedThreadPool设置超时时间,并在达到超时时创建线程

我的程序应该在多线程中运行很长时间。 我需要为线程设置超时的能力,一旦线程终止,我想再次启动它。 这里是我的代码:如何为Executors.newFixedThreadPool设置超时时间,并在达到超时时创建线程

@Test 

public void testB() throws InterruptedException {

final ExecutorService threadPool = Executors.newFixedThreadPool(2);

for(int i=0; i<2; i++){

threadPool.submit(new Runnable() {

public void run() {

System.out.println("thread start: " + Thread.currentThread().getName());

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

}

threadPool.shutdown();

threadPool.awaitTermination(100000, TimeUnit.SECONDS);

}

回答:

下面的代码会一遍又一遍地运行相同的任务。 游泳池将在一定时间后关闭。

这似乎是做你的要求。

final ExecutorService threadPool = Executors.newFixedThreadPool(2); 

for(int i = 0; i < 2; i++){

final int taskNb = i;

threadPool.submit(new Runnable() {

public void run() {

System.out.println("Thread " + taskNb + " start: " + Thread.currentThread().getName());

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

// Submit same task again

threadPool.submit(this);

}

});

}

// Only shutdown the pool after given amount of time

Thread.sleep(100_000_000);

threadPool.shutdown();

// Wait for running tasks to finish

threadPool.awaitTermination(5, TimeUnit.SECONDS);

以上是 如何为Executors.newFixedThreadPool设置超时时间,并在达到超时时创建线程 的全部内容, 来源链接: utcz.com/qa/266961.html

回到顶部