gpt4 book ai didi

java - 如何使 newSingleThreadScheduledExecutor 超时

转载 作者:行者123 更新时间:2023-11-29 02:31:20 25 4
gpt4 key购买 nike

在 Android 中,我试图启动一个线程,该线程会自行终止或在某个超时限制(例如 20 秒)后被执行程序取消?所以 runnable 只会在那么多秒内完成它的工作而不是取消...

我如何实现这一点?我目前正在按以下方式启动它。

Executors.newSingleThreadScheduledExecutor().schedule(myRunnable, 0, TimeUnit.MILLISECONDS);

我的可运行程序看起来像这样

static class MyRunnable implements Runnable {


MyRunnable(Helper _helper) {
helper = _helper;
}


public void run() {


}
}

最佳答案

如果您想停止已经提交给 ExecutorService 的任务,那么您需要处理 Future 对象。

喜欢这个答案:

Stop a Runnable submitted to ExecutorService

基本上,您将提交一个Runnable并取回一个Future对象,您可以使用它来取消它。

具体针对您的问题:在 20 秒内停止一个任务,您可以使用将 Future 对象从第一个任务切换到另一个任务,如下所示:

ExecutorService executor = Executors.newSingleThreadScheduledExecutor();

// Schedule your audio processing job like normal.
final Future<?> future = executor.submit(new MyAudioProcessingRunnable())

// Schedule the cancelation to happen in 20 seconds.
executor.schedule(new Runnable() {
if (!future.isCancelled() && !future.isDone()) {
// Cancel and interrupt any blocking calls.
future.cancel(true);
}
}, 20, TimeUnit.Seconds);

重要 - 您的 MyAudioProcessingRunnable 中必须有代码才能支持取消。

关于java - 如何使 newSingleThreadScheduledExecutor 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502689/

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