zoukankan      html  css  js  c++  java
  • java线程状态及转换

    java线程有6种状态:

    新建线程new,启动线程runnable,阻塞block,限时等待timed_waiting,等待线程waiting,终止线程terminated

    1.限时等待timed waiting :处于这种状态的线程不会被分配cpu执行时间。不过无须等待被其他线程显式地唤醒,在一定时间之后它们会由系统自动唤醒。以下方法会让线程进行限时等待状态:

       a.  Thread.sleep()方法;

       b.  设置了Timeout参数的Object.wait()方法;

       c.  设置了Timeout参数的Thread.join()方法;

       d.  LockSupport.parNanos()方法;

       e. LockSupport.parkUntil()方法。

    2.无限期等待Waiting :处于这种状态的线程不会被分配cpu执行时间。它们要等待被其他线程显式地唤醒。

    以下方法会让线程进入无限期的等待状态:

        a.  没有设置Timeout参数的Object.wait()方法。

        b.  没有设置Timeout参数的Thread.join()方法。

        c.  LockSupport.park()方法。

    3.阻塞 Blocked :线程被阻塞了。"阻塞状态"与"等待状态"的区别,"阻塞状态"在等待着取到一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生。"等待状态"则是等待一段时间,或者唤醒动作的发生。在程序等待进入同步区域的时候,
    线程将进入这种状态。

    线程状态的转换如下:

    参考资料:《深入理解java虚拟机》

  • 相关阅读:
    celery 定时任务demo
    zip函数的使用
    关于数论的知识整理——待更新
    线性基
    博弈论博客推荐
    BZOJ1597: [Usaco2008 Mar]土地购买——斜率优化
    BZOJ1096 [ZJOI2007]仓库建设——斜率优化
    bzoj1010: [HNOI2008]玩具装箱toy——斜率优化
    斜率优化
    HDU3480 Division——四边形不等式或斜率优化
  • 原文地址:https://www.cnblogs.com/expiator/p/9481602.html
Copyright © 2011-2022 走看看