gpt4 book ai didi

java - 如何为 Executors.newFixedThreadPool 设置超时并在超时后创建线程

转载 作者:行者123 更新时间:2023-12-02 11:49:10 25 4
gpt4 key购买 nike

我的程序应该在多线程下运行很长时间。我需要能够为线程设置超时,一旦线程终止,我想再次启动它。这是我的代码:

    @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);

关于java - 如何为 Executors.newFixedThreadPool 设置超时并在超时后创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com