美文网首页
并发总结(三)关于线程状态

并发总结(三)关于线程状态

作者: 杭州痞老板 | 来源:发表于2018-04-30 21:21 被阅读0次

    (一) 线程共有六种状态

    //取自Thread$State
    public enum State {
            /**
             * 线程未完全创建时
             */
            NEW,
            /**
             * 该线程只要不阻塞在监视器锁上,不被挂起,不休眠就是Runnable状态
             * 线程可往下执行或者阻塞在其他资源上(网络传输,读取磁盘数据等)
             */
            RUNNABLE,//可运行状态
            /**
             * 在对象的锁池中竞争锁(on object monitor)
             */
            BLOCKED,//阻塞
            /**
             *  在对象的等待池中等通知(on object monitor) 
             *  线程被挂起(park)
             */
            WAITING,//等待
            /**
             * 在对象的等待池中限时等通知(on object monitor)
             * 线程被限时挂起(park)
             * 线程休眠(sleep)
             */
            TIMED_WAITING//限时等待
            /**
             * 线程已终止
             */
            TERMINATED;
    }
    

    (二)与锁相关的线程状态

    2.1 当线程在对象的锁池中竞争锁时,状态为 BLOCKED
    2.2 当线程在对象的等待池中等待其他线程的通知时,状态为:WAITINT(on object monitor)、TIMED_WAITING(on object monitor),等收到通知之后便从等待池中进入锁池
    2.3 线程在等待Reentrantlock锁,Semaphore互斥量等并发工具类时,由于绝大多数类的内部都是通过挂起线程来实现等待,所以线程状态为WAITTING(park)、TIMED_WAITING(park)

    相关文章

      网友评论

          本文标题:并发总结(三)关于线程状态

          本文链接:https://www.haomeiwen.com/subject/koftrftx.html