Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要求在取消前启动FutureTask_Java_Multithreading_Concurrency_Futuretask - Fatal编程技术网

Java 要求在取消前启动FutureTask

Java 要求在取消前启动FutureTask,java,multithreading,concurrency,futuretask,Java,Multithreading,Concurrency,Futuretask,在我的可调用代码中,我使用信令将多个结束行为通知给另一个线程。可调用对象与执行器中的FutureTasks一起排队。它们也可能在排队后被取消 现在,我的问题是,我的信号工作依赖于至少正在启动的任务,但如果任务在有机会运行之前被标记为已取消,执行者似乎只是跳过了任务 所以,有没有一种方法可以保证任务在运行时总是启动,并且总是取消(通过InterruptedException) 另外,您是否可以检查任务是否尚未启动但失败?您可能可以将FutureTask类划分为子类并重写其方法以执行信号发送。根据文

在我的可调用代码中,我使用信令将多个结束行为通知给另一个线程。可调用对象与执行器中的FutureTasks一起排队。它们也可能在排队后被取消

现在,我的问题是,我的信号工作依赖于至少正在启动的任务,但如果任务在有机会运行之前被标记为已取消,执行者似乎只是跳过了任务

所以,有没有一种方法可以保证任务在运行时总是启动,并且总是取消(通过InterruptedException)


另外,您是否可以检查任务是否尚未启动但失败?

您可能可以将FutureTask类划分为子类并重写其方法以执行信号发送。根据文档,即使任务已取消,也应调用此方法

我怀疑答案是一个简单的“不”,这个解决方案非常有效!我添加了一个变量hasStarted来跟踪是否调用了Callable.run(),并在FutureTask.done()中添加了一些信号,如果hasStarted为false就会触发该变量。