代码之家  ›  专栏  ›  技术社区  ›  Teekam Suthar

如何在java中运行可取消的计划任务

  •  0
  • Teekam Suthar  · 技术社区  · 6 年前

    kotlin函数 delay() 具有以下规格:

    • 在给定时间内延迟协程 不堵塞任何线程 和 在指定时间后恢复。*此暂停功能是 可取消 .*如果当前协程的[Job]被取消或 当此挂起功能正在等待时完成,此功能* 立即恢复[取消例外]。

    我想用Java实现精确的功能。基本上,我需要使用一些延迟来运行一个函数,并且这应该可以在任何给定的条件下随时取消。

    我已经经历过了 this 线程,但大多数答案都不太适合我的场景。

    0 回复  |  直到 6 年前
        1
  •  2
  •   Maksym Rudenko    6 年前

    您正在寻找 ScheduledExecutorService .

     // Create the scheduler
        ScheduledExecutorService scheduledExecutorService = 
         Executors.newScheduledThreadPool(1);
        // Create the task to execute
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello");
            }
        };
        ScheduledFuture<?> scheduledFuture =
            scheduledExecutorService. schedule(r, 5, TimeUnit.SECONDS);
      
        // Cancel the task
        scheduledFuture.cancel(false);
    

    当你取消它时 InterruptedException 将被抛出。