10.Java线程的状态

Java中线程的状态

Thread类中有一个枚举类,定义了线程的状态

  1. NEW:只是创建了一个java线程对象,还没有start ;
  2. RUNNABLE:处于可运行状态的线程正在Java虚拟机中执行,但它可能正在等待来自操作系统的其他资源,如CPU;
  3. BLOCKED:线程尝试获得锁,但是锁已经被其他线程拥有了,当前线程就会进入阻塞状态 ;
  4. WAITING: 处于永久等待状态。
    • 线程调用以下某个方法进入这种状态:
      • Object.wait()
      • thread.join()
      • LockSupport.park
    • 此时线程正在等待另一个线程执行特定操作。例如:
      • 调用对象的Object.wait()方法的线程正在等待另一个线程对该对象调用Object.notify()或Object.notifyAll()
      • 调用Thread.join()的线程正在等待指定的线程终止。
  5. TIMED_WAITING:有时限的等待。
    • 线程调用以下某个方法进入这种状态:
      • Thread.sleep(timeout)
      • Object.wait(timeout)
      • thread.join(timeout)
      • LockSupport.parkNanos
      • LockSupport.parkUntil
  6. TERMINATED:线程已完成执行。

示例

public class StateDemo {

    public static void main(String[] args) throws InterruptedException {

        Thread t1 = new Thread(() -> {
        }, "t1");


        Thread t2 = new Thread(() -> {
            while (true) {

            }
        }, "t2");
        t2.start();


        Thread t3 = new Thread(() -> {
            log.debug("running...");
        }, "t3");
        t3.start();


        Thread t4 = new Thread(() -> {
            synchronized (StateDemo.class) {
                try {
                    Thread.sleep(100000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }, "t4");
        t4.start();


        Thread t5 = new Thread(() -> {
            try {
                t2.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "t5");
        t5.start();


        Thread t6 = new Thread(() -> {
            synchronized (StateDemo.class) {
                log.debug("");
            }
        }, "t6");

        t6.start();


        Thread.sleep(500);
        log.debug("t1:" + t1.getState());
        log.debug("t2:" + t2.getState());
        log.debug("t3:" + t3.getState());
        log.debug("t4:" + t4.getState());
        log.debug("t5:" + t5.getState());
        log.debug("t6:" + t6.getState());

        System.exit(1);
    }
}

输出:

2025-10-04 11:40:51.581 [t3] c.StateDemo - running...
2025-10-04 11:40:52.087 [main] c.StateDemo - t1:NEW
2025-10-04 11:40:52.087 [main] c.StateDemo - t2:RUNNABLE
2025-10-04 11:40:52.087 [main] c.StateDemo - t3:TERMINATED
2025-10-04 11:40:52.087 [main] c.StateDemo - t4:TIMED_WAITING
2025-10-04 11:40:52.087 [main] c.StateDemo - t5:WAITING
2025-10-04 11:40:52.087 [main] c.StateDemo - t6:BLOCKED
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值