Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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中停止任务的建议_Java_Multithreading_Spring - Fatal编程技术网

关于如何在java中停止任务的建议

关于如何在java中停止任务的建议,java,multithreading,spring,Java,Multithreading,Spring,我不是一个多线程专家,只是初学者,所以请试着理解我对这个主题的拙劣理解 我有一些任务与异步执行它们,这是用这个bean创建的: <bean id="executorService" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool"> <constructor-arg value="10" /> </bean> 我提交的任务如下: Futur

我不是一个多线程专家,只是初学者,所以请试着理解我对这个主题的拙劣理解

我有一些任务与异步执行它们,这是用这个bean创建的:

<bean id="executorService" class="java.util.concurrent.Executors"
    factory-method="newFixedThreadPool">
    <constructor-arg value="10" />
</bean>

我提交的任务如下:

Future<String> resultHandler = executorService.submit(new WorkerClass());
Future-resultHandler=executorService.submit(new-WorkerClass());
让我们想象一下,在这个场景中,我将同时运行两个任务,任务
A
和任务
B

如何在不影响任务
A
的情况下停止任务
B

保存到何处是明智的,这意味着我应该创建某种类型的
HashMap
或其他东西来存储我未来的对象,并通过某个键检索它们,然后对它们执行
cancel(true)
,或者更有经验的人如何执行此操作?

试试看

Future<String> resultHandlerB = executorService.submit(new WorkerClass());
...
boolean canceled=resultHandlerB.cancel(true);
Future resultHandlerB=executorService.submit(新WorkerClass());
...
boolean cancelled=resultHandlerB.cancel(true);
试试看

Future resultHandlerB=executorService.submit(新WorkerClass());
...
boolean cancelled=resultHandlerB.cancel(true);

worker对象的HashMap听起来不错。您可以中断线程对象,并干净地处理
InterruptedException
。如何从
HashMap
ConcurrentHashMap
进行对象清理。一旦它们完成/中断/取消或不必要,我是否应该从映射中删除它们?如果您不再需要它们,请清理它们。是的,一旦线程死亡(到达
run()
)并且没有对
工作者的引用,就从
HashMap
中删除它们,所有资源都将被GCed。工作对象的
HashMap
听起来不错。您可以中断线程对象,并干净地处理
InterruptedException
。如何从
HashMap
ConcurrentHashMap
进行对象清理。一旦它们完成/中断/取消或不必要,我是否应该从映射中删除它们?如果您不再需要它们,请清理它们。是的,一旦线程死亡(到达
run()
)并且没有对
工作者的引用,就从
HashMap
中删除它们,所有资源都是GCD。我没有resultHandlerA和resultHandlerB。我对两者使用相同的对象变量。您不能使用相同的变量来保存2个值。它只包含一个,引用任务A或任务B,而您刚刚丢失了对另一个的引用,并且无法以任何方式控制它。这是你的意图吗?事实上,我用地图上的同一个变量使它工作。谢谢,我没有resultHandlerA和resultHandlerB。我对两者使用相同的对象变量。您不能使用相同的变量来保存2个值。它只包含一个,引用任务A或任务B,而您刚刚丢失了对另一个的引用,并且无法以任何方式控制它。这是你的意图吗?事实上,我用地图上的同一个变量使它工作。谢谢