定义循环结束标记
因为线程运行代码一般都是循环,只要控制了循环即可,让run方法结束,也就是线程结束。
使用interrupt(中断)方法。
该方法是结束线程的冻结状态,使线程回到运行状态中来。(当线程处于冻结状态,就不会读取到标记,那么线程就不会结束。当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除。强制让线程恢复到运行状态中来,这样就可以操作标记让线程结束。)
注:stop方法已经过时不再使用。
(有bug不再使用,但老程序里面有stop所以没取消)
public class StopThreadDemo {
public static void main(String[] args) {
StopThread st = new StopThread();
Thread t1 = new Thread(st);
Thread t2 = new Thread(st);
//守护线程,其所守护的线程结束,它本身也结束(main结束了,即使t1、t2还在wait,也随main结束而结束)
t1.setDaemon(true);
t2.setDaemon(true);
t1.start();
t2.start();
int num = 0;
while (true) {
if (num++ == 60) {
st.changeFlag();//num自增到60执行循环结束标记
t1.interrupt();//对冻结进行清除
t2.interrupt();
break;
}
System.out.println(Thread.currentThread().getName() + "......." + num);
}
System.out.println("over");
}
}
class StopThread implements Runnable {
private boolean flag = true;
public void run() {
while (flag) {
// try{wait();}catch (InterruptedException e) { System.out.println(Thread.currentThread().getName()+"Exception");} //线程冻结,用interrupt唤醒
System.out.println(Thread.currentThread().getName() + "....run");
}
}
public void changeFlag()//执行循环结束标记
{
flag = false;
}
}
守护线程,其所守护的线程结束,它本身也结束
public final void setDaemon(boolean on)
将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55883-8.html
恭喜杨洋代言的爱奇艺和索尼都有获奖哦