gpt4 book ai didi

java - 在主线程中等待,直到取消的执行器任务完成

转载 作者:行者123 更新时间:2023-12-01 06:24:44 27 4
gpt4 key购买 nike

我有一个 ScheduledExecutorService (带有 newScheduledThreadPool(1)),我在其中添加如下任务:

    myTask = scheduler.scheduleAtFixedRate(new Runnable() {
@Override public void run() {
// do work
}
},
delay,
interval,
TimeUnit.MILLISECONDS );

我有一份所有任务的 list 。例如,如果我想删除一个任务,我可以这样做(例如第一个任务)

myTaskList.get(0).getTask().cancel(true);

我现在的问题是,如果我想取消的任务当前正在调度程序线程中运行,我必须在主线程中等待,直到任务被取消。我想我可以用 get() 来做到这一点,如下所示:

myTaskList.get(0).getTask().cancel(true);
myTaskList.get(0).getTask().get();

但我的主线程无需等待任务代码完成即可继续运行。

为了清楚起见,我想要的基本上是这样的:

  • 用户想要取消任务

  • 如果要取消的任务是当前在调度程序线程中运行的任务,则主线程必须等待,直到该任务不再是在调度程序线程中执行的任务

最佳答案

如果我真正理解你的意思,你希望主方法等待子线程完成/停止。这是真的吗?如果是这样,您可以在 main 方法中使用 join() 方法。此方法强制主方法等待子线程停止/完成。该方法位于类java.lang.Thread中。

关于java - 在主线程中等待,直到取消的执行器任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364183/

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