使用Java线程的setTimeout

时间:2019-02-04 23:53:49

标签: java multithreading

说我有这个:

  private static ExecutorService executor = Executors.newFixedThreadPool(1);

  executor.execute(() -> {
     Thread.sleep(100);
      doSomething();
  });

由于我正在重用线程,因此如果其他人想使用该线程,则会阻止它。我的问题是-有没有一种方法可以简单地注册一个回调,如下所示:

   executor.execute(() -> {
        timers.setTimeout(() -> {  // imaginary utility
             doSomething();
        },100);
   });

核心Java有可能吗?

1 个答案:

答案 0 :(得分:3)

是的,看起来不错,我在Java 10上对其进行了测试:

CompletableFuture.delayedExecutor(1, TimeUnit.MILLISECONDS).execute(() -> {
    doSomething();
});