Java线程状态的想法

/ Java / 0 条评论 / 3933浏览

Java的6个状态

线程被创建,并未开始执行

线程在执行,或者等待操作系统的资源,比如processor

等待状态,通过如下三种方式进入Object.wait/Thread.join/LockSupport.park。等待其他线程的专门的操作。比如wait等notify。再比如join等待其他线程运行结束。

带有超时功能的WAITING。通过如下五种种方式进入Thread.sleep\Object.wait with timeout\Thread.join with timeout\LockSupport.parkNanos\LockSupport.parkUntil

遇到锁了,即monitor lock(synchronized 就是monitorenter 和 monitorexit 的代码块)

线程执行完成。

其实对于正常流程的程序执行,应该就是NEW->RUNABLE->TERMINATED 那么其他状态就是遇到了阻碍,要么等着获取锁,要么等着其他线程处理后告知,都是被迫暂停运行。 所以我花了如下的图,可能可以帮助刚学习的java朋友理解

请输入图片描述