结束线程的问题,高手指教啊,马上给分!

baobeiSimple 2007-08-02 11:45:53
小弟弄线程时遇到一个麻烦:以下是源程序:

public class CountTest implements Runnable {

int count= 1, number;

public CountTest(int num)
{
number = num;
System.out.println("Create thread " + number);
}

public void run()
{
while(true)
{
System.out.println("thread " + number + ":count " + count);
System.err.println(Thread.currentThread().toString());

//if(++count== 6)
//return; 如果注释掉这两句,怎样结束这个死循环
}
}

//起六个线程
public static void main(String args[])
{
for(int i = 0; i < 6; i++)
new Thread(new CountTest(i+1)).start();
}
}

如果注释掉
//if(++count== 6)
//return; 如果注释掉这两句,怎样结束这个死循环
这两句,我想达到结束这个死循环的效果,请问怎么实现?
高手指教!
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony_zhou820602 2008-08-28
  • 打赏
  • 举报
回复
在主线程里搞个boolean 变量stop=false,然后将CountTest类里改为while(!stop),
在需要结束的的地方,比如在主线程里sleep(6000);stop=true;就可以了
cobra001 2007-08-05
  • 打赏
  • 举报
回复
needLoop 设置为boolean类型,然后在别的地方建一个函数监听while及控制这个needLoop 。这样能不能达到你要的效果呢?
joejoe1991 2007-08-03
  • 打赏
  • 举报
回复
在while循环里丢出一个异常就行了
KingNE 2007-08-03
  • 打赏
  • 举报
回复
只能在while()想办法了
baobeiSimple 2007-08-03
  • 打赏
  • 举报
回复
谢谢楼上的。
问题是,我想保证run()里的代码只能使这些:
while(true)
{
System.out.println("thread " + number + ":count " + count);
System.err.println(Thread.currentThread().toString());

}

不能设置needLoop标志。
请大家再帮我想想办法吧!
hoverlees 2007-08-02
  • 打赏
  • 举报
回复
Thread th=new Thread(new CountTest());
启动时用:th.start();
结束时用:th.destory();
但是,并不提倡在外部使用destory来结束一个线程,这样不安全,也不会回收资源.
所以只有设置一个标志,然后在外部改变它.
public void run(){
while(needLoop){
System.out.println("thread " + number + ":count " + count);
System.err.println(Thread.currentThread().toString());
}
}

62,623

社区成员

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

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