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

Per*_*ror 6 java multithreading jsf-2

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

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

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

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

Pet*_*vic 1

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

呼叫:

boolean cancel(boolean mayInterruptIfRunning)
Run Code Online (Sandbox Code Playgroud)

在您的情况下,调用应该使用:

mayInterruptIfRunning=true
Run Code Online (Sandbox Code Playgroud)

剩下的唯一问题是:在哪里保存 Future 参考?:)
如果您也愿意,我们可以讨论这个问题 :)