/**
* 停止线程:
* 1.stop():已过时,这种方法有固有的不安全性,强制停止线程,不论处于什么状态都会停止,就会导致线程的不安全。
* 2.run方法结束了,当线程中没有运行的代码时,线程就结束了,意味着任务结束,线程消失。
*
* 考虑一个问题,怎么能让run方法结束呢?
* 一般情况下,run方法当中都会定义循环。
* 原因:
* 开启新的执行路径是为了让多次运算和其他代码进行同时的执行。
*
* public void run(){
* syso("hello world"); //这个线程任务是毫无意义的,不需要开启线程。
* }
*
* public void run(){
* while(true){
* syso("hello world");
* }
* }
*
* 开启多线程会同时重复的做很多运算。
*
* 怎么结束run方法呢? 控制run方法当中的循环就可以了。
* 怎么控制循环呢? 在循环当中设置标志位,通过标志位来完成。
* */
class StopRun implements Runnable{
private boolean flag = true;
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
while (flag) {
System.out.println(Thread.currentThread().getName()+".....run");
}
}
}
public class StopThreadDemo01 {
public static void main(String[] args) {
StopRun sRun = new StopRun();
Thread t1 = new Thread(sRun);
Thread t2 = new Thread(sRun);
t1.start();
t2.start();
int num = 0;
while (true) {
if (++num==50) {
sRun.setFlag(false);
break;
}
System.out.println(Thread.currentThread().getName()+".....run.."+num);
}
System.out.println("over");
}
}