线程停止的方法及其他知识点

package state;

import testThread.TestThread;

//测试stop
//1.建议线程正常停止--->利用次数,不建议死循环
//2.建议使用标志位--->设置一个标志位
public class TestStop implements Runnable {
    
    



    //1.设置一个标志位
    private boolean flag = true;

    @Override
    public void run() {
    
    
        int i = 0;
        while (flag) {
    
    
            System.out.println("run....Thread" +i++);
        }
    }

    //2.设置一个公开的方法停止线程,转换标志位
    public void stop() {
    
    
        this.flag = false;
    }

    public static void main(String[] args) {
    
    
        TestStop testStop = new TestStop();
        new Thread(testStop).start();


        for (int i = 0; i < 100; i++) {
    
    
           System.out.println("main"+i);
            if (i==90) {
    
    
                //调用stop方法切换标志位,让线程停止
                testStop.stop();
                System.out.println("线程该停止了");
            }
        }
    }
}


注意:1.如果不在for循环中做些什么的话 瞬间for循环结束,还没轮到线程开始跑呢,线程就停止了,然后主函数中的线程也停止了,结果就只显示“线程该停止了”。
      2.推荐用标志位flag 这个线程停止的方法


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37412975/article/details/114272412