在Android中,我试图启动一个杀死自身的线程,或者在超时限制(例如20秒)之后由执行程序取消?因此,runnable只会在很多秒内完成它的工作而不是取消...
我如何实现这一目标?我现在正在开始如下。
Executors.newSingleThreadScheduledExecutor().schedule(myRunnable, 0, TimeUnit.MILLISECONDS);
我的runnable看起来像这样
static class MyRunnable implements Runnable {
MyRunnable(Helper _helper) {
helper = _helper;
}
public void run() {
}
}
答案 0 :(得分:0)
如果您要停止已提交给ExecutorService
的任务,则您需要处理Future
个对象。
喜欢这个答案:
Stop a Runnable submitted to ExecutorService
基本上你会submit
一个Runnable并找回一个Future
对象,你可以用来取消它。
具体到您的担忧:在20秒内停止一项任务,您可以使用{1}}从第一项任务切换到另一项任务,如下所示:
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);
中包含代码以支持取消。