关于如何在java中停止任务的建议
我不是一个多线程专家,只是初学者,所以请试着理解我对这个主题的拙劣理解 我有一些任务与异步执行它们,这是用这个bean创建的:关于如何在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 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,而您刚刚丢失了对另一个的引用,并且无法以任何方式控制它。这是你的意图吗?事实上,我用地图上的同一个变量使它工作。谢谢