停止线程的思路
1、Thread类中有stop方法,但是这种方法本质上是不安全的,而且在API中已经将这个方法标记为过期方法。
2、设置一个线程执行的判断条件,同时使用interrupt()来一起终止线程。
(interrupt()的作用:将阻塞状态的线程变为中断,但是线程并没有死亡。如果想要线程死亡,必须用判断条件阻止线程执行run方法)
package cn.zyyyx.demo;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class Stop extends Thread {
private boolean flag = true;
@Override
public synchronized void run() {
while (flag){
try {
wait();
} catch (InterruptedException e) {
toFalse();
}
System.out.println(getName()+"当前线程正在执行!");
}
}
public void toFalse(){
this.flag = false;
}
}
public class StopThread {
public static void main(String[] args) throws InterruptedException {
Stop stop = new Stop();
stop.setName("紫炎易霄");
Stop stop1 = new Stop();
stop1.setName("萧逸");
//开启线程
stop.start();
stop1.start();
/**
* 让线程执行一段时间
*/
for (int i = 0; i < 10; i++) {
Thread.sleep(10);
}
//中断线程
stop.interrupt();
stop1.interrupt();
}
}