首页 > 编程语言 >java 线程状态

java 线程状态

时间:2023-03-04 14:55:48浏览次数:35  
标签:状态 调用 java Thread Object 线程 进入

线程状态

java.lang.Thread.State 里明确了线程的各个状态以及怎么进入和退出各个状态

public enum State {
        // 初始化状态,线程创建之后的状态,new Thread() 之后进入
        NEW,
        // 就绪状态,线程正在运行或等待 CPU 时间片,调用了 线程的 start() 方法进入
        RUNNABLE,
        // 阻塞状态,synchronized 代码块或方法
        BLOCKED,
        /**
         * 无限期等待状态,如果不手动唤醒就一直持续该状态
         * 当调用了不带时间的 Object.wait() 进入该状态(退出状态:Object.notify() / Object.notifyAll())
         * 当调用了不带时间的 Thread.join() 进入该状态(退出状态:加入的线程执行完毕)
         * 当调用了 LockSupport.park() 进入该状态(退出状态:给线程颁发令牌,LockSupport.unpark(thread))
         */
        WAITING,
        /**
         * 期限等待,达到条件后会自动唤醒,无需手动唤醒
         * 当调用了 Thread.sleep() 进入该状态(不管带不带时间都是期限等待,虽然不带时间会一直等,这样有点像无限期等待,但是确实进入了期限等待)
         * 当调用了带时间的 Object.wait() 进入该状态(退出状态:时间结束 / Object.notify() / Object.notifyAll())
         * 当调用了带时间的 Thread.join() 进入该状态(退出状态:时间结束 / 加入的线程执行完毕)
         * 当调用了 LockSupport.parkNanos() 进入该状态(退出状态:时间结束)
         * 当调用了 LockSupport.parkUntil() 进入该状态(退出状态:到指定时刻)
         */
        TIMED_WAITING,
        // 运行结束
        TERMINATED;
    }

标签:状态,调用,java,Thread,Object,线程,进入
From: https://www.cnblogs.com/hangychn/p/17178292.html

相关文章