java - Java中ExecutorService关闭时显示友好消息?

标签 java multithreading threadpool executorservice

所以,我有一个用于关闭 Java 中的执行程序服务的代码,如下 -

public void shutdownExecutor() {
    executor.shutdown();
    try {
        executor.awaitTermination(requestInfo.getUploadThreadCount() * 30,
                TimeUnit.SECONDS);
    } catch (InterruptedException e) {
        logger.error(e);
    }
}

在上面的代码中,正如您所看到的,客户端应用程序(控制台或 Web)会变为空白,直到线程计数 * 30 秒用完。如何在此处显示友好消息?

最佳答案

如果您想在等待时显示定期消息,您可以这样做(例如,每 1 秒显示一条消息,最多 30 秒):

try {
  long endTime = System.nanoTime() + TimeUnit.SECONDS.toNanos(30);
  while (true) {
    long timeout = Math.min(
        TimeUnit.SECONDS.toNanos(1), endTime - System.nanoTime());
    if (timeout <= 0
        || executor.awaitTermination(timeout, TimeUnit.NANOSECONDS)) {
      break;
    }
    System.err.println("Still waiting for timeout");
  }
} catch (InterruptedException e) {
  logger.error(e);
  Thread.currentThread().interrupt();
}

关于java - Java中ExecutorService关闭时显示友好消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754755/

相关文章:

c# - 为什么.net Threadpool 只用于短时间跨度的任务?

c# - 轮询数千个 TCP 套接字

java - Android 项目中的两个 api key - 一个在开发者控制台上自动生成

java - 使用 Apache Derby 的内存嵌入式服务器

c# - 在非 UI 线程 Silverlight 5 浏览器应用程序中创建 UserControl

java - 多线程服务器转换为 SSL 后,回显消息时出现问题

java - guava ThreadPool+CountDownLatch 遇到IllegalMonitorStateException

java - 如何在 Java 中处理多个流?

java - Java中用户管理对话框的实现

java - 我如何为执行程序选择线程数