线程的几种方式

线程状态

在这里插入图片描述

  • NEW:安排了工作,还为开始行动(创建了Thread对象,但是还没调用start方法,系统内核还没有线程)
  • RUNNABLE:可工作的,又可以分成正在工作中和即将开始工作(就绪状态,有两种:1. 正在CPU上运行,2.还没在CPU运行呢,但是已经准备好了)
  • BLOCKED:这几个都表示排队等着其他事情(等待锁,进入阻塞状态)
  • WAITING:这几个都表示排队等着其他事情(线程中调用了wait进入阻塞状态)
  • TIMED_WAITING:这几个都表示排队等着其他事情(线程中通过sleep进入的阻塞状态)
  • TERMINGTED:工作完成了(系统里面的线程已经执行完毕了,销毁了(相当于run执行完了,但是Thread对象还在))
    在这里插入图片描述
public class Demo12 {
    
    
    public static void main(String[] args) throws InterruptedException {
    
    
        Thread t = new Thread(() -> {
    
    
            System.out.println("hello thread");
            try {
    
    
                Thread.sleep(1000);
            } catch (InterruptedException e) {
    
    
                e.printStackTrace();
            }
        });

        // 在 start 之前获取. 获取到的是线程还未创建的状态
        System.out.println(t.getState());

        t.start();
        // Thread.sleep(500);
        System.out.println(t.getState());
        t.join();

        // 在 join 之后获取. 获取到的是线程已经结束后的状态
        System.out.println(t.getState());
    }

}
运行结果:
    NEW
	RUNNABLE
	hello thread
	TERMINATED

猜你喜欢

转载自blog.csdn.net/HBINen/article/details/126593154