求教关于多任务并发执行的问题

问题描述

有种情况,我需要提交一个表单,同时需要向用户发送短信,以及发送电子邮件。可能发送短信以及发送邮件耗时较长,我就想将三个任务并发执行,同时提交表单完成后优先返回,无需等待发送短信以及发送电子邮件返回结果。但是现在我能够做到的是三个任务并发执行,采用Executor,但是却要等到三个任务都完成后才返回结果。我怎样才能实现上面的需求呢?如果不能采用多线程,是不是还有其他方式? 问题补充:你好,如果这样的话,主线程推出后子线程是不是就也会退出了啊,这样的话就无法发送短信和电子邮件了。该如何让两个子线程各自走完呢?我对线程不是很了解,请多多指教下。

解决方案

你新开线程之后,主线程的退出是不会影响子线程的,只有进程退出才会影响所有线程:)
解决方案二:
也可以,不过相当于在response后,通过ajax再次回传请求服务器,多了一次request。并且用ajax其实也相当于在一个新的请求线程中处理,如果直接用多线程来做,会简单一些,不用再写ajax了。
解决方案三:
不使用线程也可以做到吧提交以后,在请求里面设置一个值,表示可以发送短信和邮件等响应页面加载完成, 判断请求里面的属性是不是等于你设置的值是的话,可以通过AJAX再发送短信和邮件
解决方案四:
可以使用多线程。邮件和短信放到2个新开的线程中,而表单使用主线程,这样表单的返回就不需要等待短信和邮件的完成了。

时间: 2024-09-14 22:06:29

求教关于多任务并发执行的问题的相关文章

关于客户端发出请求,服务端并发执行多任务(异步方式)的问题,谢谢!

问题描述 大家好:我有这样一个需求,描述如下:1.客户端发送一个请求到服务器端,服务器端需要并发执行多个任务(具体任务有是到多个不同的网站抓取数据).2.但客户端不需要等待服务端把任务全部执行完,当服务端完成一个网站的抓取任务后即可立即返回到客户端,其他抓取任务可以在其他线程中继续执行,执行的结果将写入本机cache,剩下的任务也必须马上执行,因为客户端每隔几秒还会回来请求其他的数据.3.客户端每隔几秒发送一次请求到服务端,从本机cache中读取刚才未完成任务的结果,如果读取到说明其他任务也完成

基于嵌入式操作系统VxWorks的多任务并发程序设计(1)――基本概念

1引言 嵌入式系统定义义为:嵌入到对象体系中的专用计算机系统."嵌入性"."专用性"与"计算机系统"是嵌入式统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统.目前,随着高端消费类电子产品(如PDA.手机.智能家电)的普及,嵌入式计算机系统获得了相当广泛的应用.  操作系统在嵌入式软件体系中占据着重要低位,学习和掌握相关的知识是一名嵌入式系统研发人员的必须. 1.1本文的读者对象与写作目的 本文针对的读者对象为入门级的嵌入式系统软件开发人

C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现

执行   上司交代要做一个小测试 具体的需求是 在某一时间点,只有N个线程在并发执行,如果有多余的线程,则排队等候~ 还真是费尽心思啊~最终还是被我攻克了~ 下面我就来说说具体的实现 C#提供了Mutex与Interlocked这两个与线程相关的类,都在Threading命名空间下~! Mutex中提供了WiteOne,ReleaseMutex 两个实例方法~ WiteOne的作用是"阻塞当前线程,提供对该线程的原子操作" 也就是说当一个线程遇到WiteOne的时候,如果在WiteOn

ConcurrencyMode.Multiple模式下的WCF服务就一定是并发执行的吗:探讨同步上下文对并发的影响[上篇]

在<并发与实例上下文模式>中,我们通过实例演示的方式讲述了基于不同实例上下文模式的并发行为.对于这个实例中的服务类型CalculatorService,读者应该还记得我们对它进行了特别的定义:通过ServiceBehaviorAttribute特性将属性将UseSynchronizationContext设置成False.至于为何要这么做,这就是本篇文章需要为你讲述的内容.为了让读者对本节介绍的内容有一个深刻的认识,我们不然去掉ServiceBehaviorAttribute特性的UseSyn

python: 多线程实现的两种方式及让多条命令并发执行

一 概念介绍         Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.         Thread模块是比较底层的模块,Threading模块是对Thread做了一些包装的,可以更加方便的被使用.         另外在工作时,有时需要让多条命令并发的执行, 而不是顺序

多进程-模拟进程并发执行过程

问题描述 模拟进程并发执行过程 如何模拟进程并发执行过程(Java) 老师讲,主程序调用三个随机函数,以死循环输出 y有更好的办法吗 解决方案 模拟shell进程进程的执行过程 解决方案二: 直接调用进程http://blog.csdn.net/mindhawk/article/details/3447845

问一下:float内部的运算符可以并发执行么?

问题描述 问一下:float内部的运算符可以并发执行么? float内部的运算符可以并发执行么?float的计算是通过协处理器还是CPU呢?三核处理器有几个协处理器?是不是需要同步? 解决方案 float和并发计算没有任何关系,每个核心都有协处理器.

C# 可执行文件里实现多任务并发

问题描述 现有一个winform程序,要在这个程序里执行多个任务,每个任务互不相关,每个任务都需要定时循环执行,请问如何使用多线程的方式实现多个任务并发执行,互不干扰 解决方案 解决方案二: 解决方案三:谢谢,已解决

linux中sbt 中单元测试并发执行例子

此次研究的目的原本是要使得 Play Framwork 2 中单元测试能够并发执行, 包括 JUnit 和 Spec 的测试用例, Play 2 的 activator 就是一个 sbt 的包装. 开发中发现我们 Play 2 中的单元测试是按序执行的, 实际上 sbt 下测试用例默认是并发执行的. 之所以 Play 2 的单元测试是按序的, 是因为 activator 设置了把 sbt 的两个属性 fork in Test := true 和 parallelExecution in Test