Multithreading 如何在按钮单击和释放按钮时调用线程

Multithreading 如何在按钮单击和释放按钮时调用线程,multithreading,jsf,threadpool,oracle-adf,managed-bean,Multithreading,Jsf,Threadpool,Oracle Adf,Managed Bean,请原谅我的标题,但在标题中我很难解释我的想法。如果有人能编辑它,我将非常高兴 我的页面中有一个按钮,当我点击该按钮时,会调用一个托管bean方法,该方法会调用(执行)一个新线程。新线程必须处理一些操作(I/O、电子邮件等) 问题是,当我单击该按钮时,它将保持按下状态,直到线程的所有操作完成。有没有办法按下这个按钮,然后继续做其他事情,在后台做这些操作 +1 不要跨越线程。使用异步操作引入业务服务并调用该操作。 --佩迪嘿,我是说JSF而不是C#,@Killercam!对不起,我一时糊涂了!取决于

请原谅我的标题,但在标题中我很难解释我的想法。如果有人能编辑它,我将非常高兴

我的页面中有一个按钮,当我点击该按钮时,会调用一个托管bean方法,该方法会调用(执行)一个新线程。新线程必须处理一些操作(I/O、电子邮件等)

问题是,当我单击该按钮时,它将保持按下状态,直到线程的所有操作完成。有没有办法按下这个按钮,然后继续做其他事情,在后台做这些操作

+1

不要跨越线程。使用异步操作引入业务服务并调用该操作。
--佩迪

嘿,我是说JSF而不是C#,@Killercam!对不起,我一时糊涂了!取决于您使用的业务服务框架。是EJB吗?然后只需将
@Asynchronous
放在EJB方法上即可。嗯,是的,JSF托管bean只是一个前端控制器,它反过来应该调用业务服务类/方法。或者您是说您将前端控制器逻辑与业务服务逻辑混合在同一个Java类中?为什么?分离关注点!您是否使用过任何业务服务框架?从长远来看,在一个假定存在生命周期的长期运行的JavaEE应用程序中手动生成非托管线程会带来麻烦。您真的应该将这项工作用于一个自尊心强的框架,如EJB或Spring。谢谢您的建议:)