如何在web页面中,实现耗时操作的后台执行?多线程吗?

本文探讨了在Spring框架下,如何将长时间运行的任务移至后台处理,避免阻塞用户界面。介绍了使用任务调度框架及消息队列RabbitMQ进行异步处理的方法,并讨论了如何避免任务重复提交。

如何在web页面中,实现耗时操作的后台执行?多线程吗?

系统框架是spring,
功能描述:画面输入条件,单击确定按钮,执行check
check通过后,执行一个非常耗时的操作(读取文件和数据库内容,组织成文件,压缩成zip),大约需要2--4个小时
现在的情况是,这个过程中,页面不能做其他动作。
客户要求,在进行这个耗时操作的过程中,可以去做其他的操作(比如,其他画面的录入,检索等等),只要这个过程结束后发个邮件通知他即可。

用多线程可以实现吗?给个思路。
另外这个过程中,如果用户又回到这个耗时画面该如何处理?

在线等,谢谢!!!


------解决方案--------------------
用后台任务框架来处理。

也就是用户点提交后,就在任务表中增加一条处理任务,然后就可以返回了,告知用户任务已经启动。

后台用个任务调度框架去执行任务就行了。

为了避免用户重复发起任务,注意对重复任务的数量进行控制。 
------解决方案--------------------
异步处理,有现成的框架RabbitMQ。
不能用多线程,因为servlet本身是多线程,如果再开多个线程不容易控制。 
------解决方案--------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值