java线程状态

java的线程状态包括以下几种:

NEW

线程创建的初始状态。

RUNABLE

线程正在执行。

注意这里是java线程的状态,而非操作系统中的线程状态,因此有可能RUNABLE状态的线程正处于等待系统cpu资源的状态。

BLOCKED

线程处于等待锁的状态。当java线程为了进入synchronized代码块等待获取monitor,或者被唤醒重新等待获取monitor。就会进入blocked状态。
如果在实际项目中,发现大量block线程,可能就需要我们去关注是什么东西导致的锁竞争。因为大量线程处于blocked不是一个健康态。

WATING

等待某一个状态或结果,一般是由其他线程来唤醒。通过调用如下的方法,线程会进入waiting状态。

  • Object.wait with no timeout
  • Thread.joinwith no timeout
  • LockSupport.park

TIMED_WAITING

和waiting状态基本一直,只不过在超过等待时间后会被自动唤醒。通过如下方法会进入TIMED_WAITING状态:

  • Thread.sleep
  • Object.wait with timeout
  • Thread.join with timeout
  • LockSupport.parkNanos
  • LockSupport.parkUntil

TERMINATED

线程执行玩任务后,就会到达终止态。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容