线程终止问题,急问

iaijava 2007-02-09 10:36:08
大家好...............

|----------------------->
| 子线程1 |
|<----------------------
主|
|---------------------->
线| 子线程2 |
|<----------------------
|
程|
|
|---------------------->
| 子线程2 |
|<----------------------
|
现在正在做一个Java的Application,遇到了这样一个问题.

主线程管理三个子线程,主线程用到了Timer类,定时同时起动三个子线程.

现在做好了冷关闭,就是界面按钮按下后,设置一个状态FLAG,主线程时间到了需要启动子线程的时候,发现状态FLAG不能再启动新线程了,但是要等待正在执行中的三个子线程,执行完毕.

但是在做热关闭的时候,出现了问题,虽然状态FLAG不能再启动新线程了,但是前面已经开始了的子线程,没办法被杀掉.

这个问题困扰着,很郁闷.....

前提一,主线程不关闭.
前提二,子线程只运行一次(里没有循环),下次timer到的时候,再启动一个新的子线程.
...全文
419 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
iaijava 2007-02-09
  • 打赏
  • 举报
回复
1.线程本身有关闭销毁的方法.
2.通过共享变量,也可以在线程内部判断该变量是否是要求本线程结束而自行结束.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1.线程本身的关闭销毁方法在什么时候调用呢
2.子线程只运行一次,那它在什么情况下判断共享变量变了呢.
上海老猫 2007-02-09
  • 打赏
  • 举报
回复
已前是有destory()的方法,但是现在好像不提倡用这个方法.好像是用sleep或interrupt,让他终止,自动销毁
okcome 2007-02-09
  • 打赏
  • 举报
回复
1.线程本身有关闭销毁的方法.
2.通过共享变量,也可以在线程内部判断该变量是否是要求本线程结束而自行结束.
shan1119 2007-02-09
  • 打赏
  • 举报
回复
http://www.ttadd.com/diannao/HTML/27949.html
iaijava 2007-02-09
  • 打赏
  • 举报
回复
这个名字没法找...
iaijava 2007-02-09
  • 打赏
  • 举报
回复
Timer T1 = new Timer();
T1.schedule(XX,XX,XX,XX)------------>启动的线程一--------->运行着......------->运行完回来.

想在运行中的时候把线程一杀掉.
shan1119 2007-02-09
  • 打赏
  • 举报
回复
给他起个名字,根据名字来找
shan1119 2007-02-09
  • 打赏
  • 举报
回复
thread.destroy()
iaijava 2007-02-09
  • 打赏
  • 举报
回复
现在就是这样的一个问题,不知道在那里调用,TIMER类启动一个线程,这个线程就处于没人管的状态了.
iaijava 2007-02-09
  • 打赏
  • 举报
回复
destroy???杂个用呢
shan1119 2007-02-09
  • 打赏
  • 举报
回复
or interrupt?
shan1119 2007-02-09
  • 打赏
  • 举报
回复
destroy?
iaijava 2007-02-09
  • 打赏
  • 举报
回复
需要的是界面按钮按下后,就能把线程一二三都中断杀掉.
iaijava 2007-02-09
  • 打赏
  • 举报
回复
能说具体点吗?我们现在用JMX在做的控制.
beiouwolf 2007-02-09
  • 打赏
  • 举报
回复
多线程管理用线程组来做
iaijava 2007-02-09
  • 打赏
  • 举报
回复
顶上去,下午下班前结帖.
iaijava 2007-02-09
  • 打赏
  • 举报
回复
我们这个系统是要在LINUX下面运行的,但是我们T1.schedule(XX,XX,XX,XX)------------>启动的线程一启动后,我们就没法控制它了,要如何用SHELL来判断呢?谢谢.
lixiaoxue85 2007-02-09
  • 打赏
  • 举报
回复
但是在做热关闭的时候,出现了问题,虽然状态FLAG不能再启动新线程了,但是前面已经开始了的子线程,没办法被杀掉
以前也做过一个类似的控制线程的东西,这个问题可以这样解决,判断这个子线程是否在运行,如果在运行的话就不用去执行了(或者杀死在运行新的)==>但是问题也随之出现,操作线程!那就要
看LZ用的是社么操作系统,如果是WIN,那只能说SORRY了~~你没法去操作除非你去JNI(主要是没有好的开源的东东).如果是LINUX,那先恭喜一下,你可以执行SHELL来判断线程是否存在,如果数据量过大的话就保存到文本,APP去读文本来判断线程是否已在运行

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧