解决方案 »
- java中如果一个类的父类是ServiceReturn,而这个类的每个方法的返回类型也是这个类,这样我们应该怎么理解?
- sagent疑问
- struts2.3.4.1整合ssh异常
- 求助 jsp 饼状图实例
- 求助 oracle JMS问题
- struts2 与 PDF报表间很奇怪 ,不明白的问题
- intellij idea module设置 dependencies 下 export什么意思
- 图片处理 求图片处理方面高手 跪求
- 关于struts-config.xml的详细说明
- 处女贴:JSP能发送xmlHTTP请求吗?怎么发送?
- java.util.Date 和 MySQL 中 DATETIME 数据类型如何转换?
- 路过的朋友 帮忙 解说 ssh2整合要注意那几点
小弟才疏学浅可能没理解你的问题,呵呵,等楼下。 我不认为web和java获取线程有什么区别。
这个类有 4 个静态的公开的布尔型变量:启动、暂停、继续、停止,使用 servlet 将客户端对这些变量进行控制。
启动为 true 时,启动线程
线程类里的 run 方法可以受线程管理类的 暂停、继续、停止 变量控制:
public void run(){
while(!停止){
if(暂停){
System.out.println("暂停");
}else if(){
System.out.println("继续");
}
}
}
这个帖子里有多线程管理的列子 感觉很适用你现在的情况 例子在帖子中间部分应用到WEB一样可以 希望对你有帮助
点击启动时,新建一个线程管理类。使用 servlet 将客户端对这些变量进行控制(相当于对线程进行控制)。
谢谢你,我想这样不知道可不可行,在线程启动的时候,将每个线程保存到Map中,然后在前台触发事件的时候通过传递不同的key值来获得对应的线程对象进行操作,不知道这样可不可行。另外,不知道这些线程能不能脱离应用,因为如果一个线程启动后,只要你不停止服务器,哪怕你停止了应用,这个线程还处于运行状态,我想说,即使这个应用停止后,还能不能获取到这些线程的操作句柄呢?
线程启动的时候,将每个线程保存到Map中 --> 这个想法不错。可以去试试。如果线程停止,可以将其在容器中 remove掉;
这个应用停止后,还能不能获取到这些线程的操作句柄 --> 你考虑的太多了。进程的启动依赖于虚拟机的启动,线程的运行依赖于进程。一旦你退出进程,所有这个进程中启动的线程也就自行消亡了,无须你手工去一个个停止。
但是再复杂的应用、再强大的程序,其运行机制都是一样的。麻雀虽小,无脏俱全。原理性的东西都是一样的。
我觉得既然线程的销毁和启动都和应用挂钩,而不依赖于服务器,那就可以让它们依赖于应用啊。应用退出的时候,依赖于它的线程自行销毁。
举个例子:你的服务器进程 A ,A 启动实现特殊功能的进程 B,B 进程中启动一系列线程。这样 B 进程退出的时候,那些线程也就不存在了。无需要你在 A 进程中再去处理它们。
这句小弟就真不知道在程序中如何控制了。
给你个实现思路(具体关于Thread的详细使用就不细说):
在容器启动时,创建线程实例对象并启动后,通过线程名做标识存入静态集合变量中供页面使用。
实现,暂停、继续、停止方法,这四个方法之间的通信可以通过变量标志或常用的线程通信synchronized,wait,notifyAll来实现,但因为是web系统,所以要保障并发访问的线程安全问题。
非常感谢你的方法,我想值得一试。你可以去看一下12楼的描述就知道为什么有JMX一说了。