gpt4 book ai didi

java - 判断ExecutorService的关闭时间

转载 作者:行者123 更新时间:2023-11-29 03:53:44 26 4
gpt4 key购买 nike

我有一个处理某些任务的 ExecutorService。客户端线程可以调用ExecutorService 上的shutdown()。我想在 ExecutorService 完全关闭后运行一些清理代码。 ExecutorService 完成关闭后是否有运行回调方法的机制。

注意:

  1. 无法调用shutdownNow()
  2. 清理代码必须在shutdown() 完成后运行。
  3. ExecutorService 是一个newCachedThreadPoolExecutor()

最佳答案

启动另一个检查ExecutorService.awaitTermination(...) 的线程/executor-managed-runnable在循环中的 try-catch 语句中,直到它返回 true,然后运行您的关闭处理代码。循环是必要的,因为该方法在中断时可能会过早返回。

像这样:

public class ShutdownHandler implements Runnable {

private final ExecutorService service;

public ShutdownHandler(final ExecutorService service) {
this.service = service;
}

@Override
public void run() {
boolean terminated = false;
while (!terminated) {
try {
terminated = service.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
} catch (final InterruptedException ex) {
// check again until terminated
}
}

// your shutdown handling code here
}
}

关于java - 判断ExecutorService的关闭时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506292/

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