如何终止视图范围内的bean中的线程?

时间:2012-08-24 15:22:30

标签: java multithreading jsf-2

在我们的应用程序中,当用户单击commandlink时,会生成一个弹出窗口。此单击将传递一个id进行处理。

我的托管bean是视图编组的,我正在创建一个线程来完成一些任务。

在用户点击链接的情况下,会生成弹出窗口并且线程已开始执行作业,例如用户关闭弹出窗口并尝试单击此次提供不同ID的链接。我的问题是之前启动的线程没有被破坏。我仍然可以获得最新的id详细信息作为响应,但前一个线程仍然执行作业。

我想知道是否有办法在新请求中终止先前的实例线程。我知道我可以使用sessionscoped来实现这一点,但弹出窗口正在同一个会话中打开。

1 个答案:

答案 0 :(得分:1)

就像您的用例可以快速解决方案一样:

主叫:

boolean cancel(boolean mayInterruptIfRunning)

在你的情况下,电话应该使用:

mayInterruptIfRunning=true

唯一的问题是:在哪里保留未来参考? :)
如果你想要,我们可以讨论一下:)