JAVA WEB中线程暂停与继续

具体说下我的需求,我不会列出真实项目的情况,我把问题简单化,只希望各位给我个解决方案和关键代码即可,另外项目基于SSH框架。
现在我写了一个页面A,假设页面A有一个按钮B,在我按下B的时候,后台将会从1递增打印。
例如,我按下按钮B的时候,会一直打印1,2,3,4,5等等,无限进行。
我现在需要在打印到100倍数的时候,在页面A上面弹出来一个提示,比如问:“是继续递增,还是从1重新开始,继续请选择是!”,然后这个提示有个“是”的按钮,和一个“否的按钮”。
这样,我选择是的话,会继续打印101,102,103,等等,选择否的话,会打印1,2,3,4等等。
大概就是这么个效果,其实用语言描述就是后台有个程序在运行,而且运行过程中可能会遇到需要人工判断的地方,那么就暂时停止该程序,在页面上给出提示,然后根据页面的选择,继续运行该程序。
我相信高手应该能看懂我所描述的问题吧,请给出具体的解决方案和关键代码即可。我想对于一些遇到过,或者使用过的人,应该不是什么难事。
至于分的话先给100吧,满意的话再追加,我4800+的财富值,都没怎么用过,只要顺利解决,在追加分不是问题。

第1个回答  2019-12-10
一般java
web指的是servlet,每个request会分配一个线程,如果线程池分配光,需要等待,所谓等待时间超过应该是指超过最大等待时间吧,这个时候会报错。在controller开启线程和servlet的线程池没有关系,并不会影响。单例是指一个应用中使用的都是同一个对象。
第2个回答  2012-08-17
这种问题应该都不用用到后台多线程吧? 你把程序执行后的结果(100,200,300....)保存到session里面,然后就结束返回,由前端参数来控制是用123还是用session里面的数,SSH2再加上多线程,会使逻辑处理比较麻烦,其实session就是一个多线程的处理了,简单好用。追问

我追问的问题与上面追问推荐答案的一样。其实最主要的就是解决我那个问题,就是程序运行中产生的很多参数怎么保留,所以我才想到,中断,继续这种方式。那个循环递增我只是举个例子,实际程序的参数比这个要多很多很多,你可以当做理论上无限。虽说我可能数几天是能数清楚的。但是那等于是无限,我不可能去拿SESSION记忆那么多参数。

追答

如果你需要保存无限多个参数,建议你保存到数据库中,如果只是当前线程需要保存的,就放到session中,这个是基本常识。
不要把C/S的设计思路带入到B/S的架构中,理论上session也支持无限多个参数保存,不过性能就不敢保证了。

追问

好吧。我暂且认为这是目前唯一的办法,最起码可以用。我开始就没往这方面想,因为参数太多了。。现在看来。。难道JAVA中没有更好的办法是实现这种功能??就像你说的,这样性能损失蛮大的。。

追答

你还可以自己实现类似Session的功能,不过放着现成的不同似乎有点傻,至于性能问题,不试试看怎么知道行不行... 注意一下Session是按用户保存的,如果要全局共享就必须用Application,你也可以自己实现多线程的功能,我印象中也可以实现无限的等待和循环的。

追问

我的后台只有一个程序在无限运行,我不太知道这和多线程怎么结合。如果页面的按钮造成的是后台多个线程启动,那么我可以从多线程的角度出发,去考虑这个问题。可是后台的程序说起来就是一个线程啊。还是我理解有误。望指导。

追答

如果是你说说的情况的话,需要注意一下前端是多线程的,而后端是单线程的,这个时候就需要注意后端在运行的时候是否需要接收其他用户传过来的请求,因为你在客户端运行的时候永远不知道有没有其他用户正在请求该后端程序。 你要考虑到到多线程的同步与死锁的问题。
后台那个就是单独的线程,无限的循环。

本回答被提问者采纳
第3个回答  2012-08-21
用一个变量存储每个线程的参数,当执行下一次线程之前清空,重新赋值
相似回答