首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于线程的开启和关闭。

2012-06-20 
关于线程的开启跟关闭。。先说明 我比较笨 基础比较差 悟性也比较差。。我用public void start(){new Thread(n

关于线程的开启跟关闭。。
先说明 我比较笨 基础比较差 悟性也比较差。。

我用

public void start(){
new Thread(new SnakeDriver()).start();
}

这个方法开启了一个线程要怎么关闭

public void stop(){
//这里写什么啊
}

或者有什么好的方法没有。。


[解决办法]
run函数内容执行完毕后,退出函数时线程自然就结束了。

但如果要主动去终止线程,则要靠自己在run函数中处理,建议可以Google下相关资料:Java Thead 终止。

类似于:
private boolean flag = true;
public void run() {
while (flagRun) {
// 工作任务。
}
}
[解决办法]
你的线程是匿名的啊。。。。。。

我提2个方案:

一、不用匿名线程,个线程起名
SnakeDriver sd;
sd=new SnakeDriver();
sd.start();
...............
sd.stop();

二、用Thread.getcurrentThread()来获取当前线程,再关闭它
Thread.getcurrentThread().stop();




[解决办法]
对于有循环体的线程的关闭,JDK已经不建议直接用stop方法来进行线程终止,一般来讲,有2种方法:
1.设置一个标志字段,如1楼的做法,用这个标志字段去控制线程跳出循环。
2.利用try{ while(true) ……}……catch(Interrupted e){……},在外部方法中调用线程的interrupt方法抛出InterruptedException来使线程终止。当然,只使用其中某一种是有局限的,完善的做法是二者结合使用,见下面的博文:
http://blog.sina.com.cn/s/blog_4b69a6bb0100d5pg.html

[解决办法]

Java code
public class MThread extends Thread{   private volatile boolean flag = true;      public void run(){     while(flag){        try{        //do something       }catch(InterruptedException ie){              }     }   }   public void stopThread(){      flag = false;      interrupt();     } 

热点排行
Bad Request.