关于线程的开启跟关闭。。
先说明 我比较笨 基础比较差 悟性也比较差。。
我用
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();
}