问题描述
有种情况,我需要提交一个表单,同时需要向用户发送短信,以及发送电子邮件。可能发送短信以及发送邮件耗时较长,我就想将三个任务并发执行,同时提交表单完成后优先返回,无需等待发送短信以及发送电子邮件返回结果。但是现在我能够做到的是三个任务并发执行,采用Executor,但是却要等到三个任务都完成后才返回结果。我怎样才能实现上面的需求呢?如果不能采用多线程,是不是还有其他方式? 问题补充:你好,如果这样的话,主线程推出后子线程是不是就也会退出了啊,这样的话就无法发送短信和电子邮件了。该如何让两个子线程各自走完呢?我对线程不是很了解,请多多指教下。
解决方案
你新开线程之后,主线程的退出是不会影响子线程的,只有进程退出才会影响所有线程:)
解决方案二:
也可以,不过相当于在response后,通过ajax再次回传请求服务器,多了一次request。并且用ajax其实也相当于在一个新的请求线程中处理,如果直接用多线程来做,会简单一些,不用再写ajax了。
解决方案三:
不使用线程也可以做到吧提交以后,在请求里面设置一个值,表示可以发送短信和邮件等响应页面加载完成, 判断请求里面的属性是不是等于你设置的值是的话,可以通过AJAX再发送短信和邮件
解决方案四:
可以使用多线程。邮件和短信放到2个新开的线程中,而表单使用主线程,这样表单的返回就不需要等待短信和邮件的完成了。
时间: 2024-09-14 22:06:29