线程终止

线程状态

  • new Thread()创建线程,此时线程处在创建状态

  • 调用start()函数,线程进行就绪状态

  • 当获得CPU资源时,线程进入运行状态,执行线程体的代码块

  • 当调用sleep,wait或同步锁定时,线程进入阻塞状态,就是代码不往下执行等阻塞事件解除后,重新进入就绪状态。

  • 当线程中断或结束,进入线程终止状态

    image-20201016174723013

线程停止

线程停止主要可以采用两种方法

  • 采用JDK提供的stop()、destroy方法,但这种方法已经废弃,不推荐使用。
  • 通过设置标志位使线程自己终止运行,下面通过代码举例介绍。
package MultiProcess;

//测试stop
//1.建议线程正常停止
//2.建议使用标志位
//3.不要使用stop和destroy等JDK不推荐使用的方法
public class ThreadStop implements Runnable{

    private boolean flag = true;

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

    public void stop(){
        this.flag = false;
    }

    public static void main(String[] args) {
        ThreadStop threadStop = new ThreadStop();
        new Thread(threadStop).start();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        for (int i = 0; i < 10000; i++) {
            System.out.println("main" + i);
            if (i == 9000) {
                threadStop.stop();
                System.out.println("线程终止了");
            }
        }
    }
}
posted @ 2020-10-16 17:36  提笔书几行  阅读(116)  评论(0编辑  收藏  举报