线程状态

Java 线程状态之 TIMED_WAITING

自闭症网瘾萝莉.ら 提交于 2019-11-29 23:29:02
在 上一篇章 中我们谈论了 WAITING 状态,在这一篇章里,我们来看剩余的最后的一个状态:TIMED_WAITING(限时等待)。 定义 一个正在限时等待另一个线程执行一个动作的线程处于这一状态。 A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. 更详细的定义还是看 javadoc(jdk8): 带指定的等待时间的等待线程所处的状态。一个线程处于这一状态是因为用一个指定的正的等待时间(为参数)调用了以下方法中的其一: Thread.sleep 带时限(timeout)的 Object.wait 带时限(timeout)的 Thread.join LockSupport.parkNanos LockSupport.parkUntil 对应的英文原文如下: Thread state for a waiting thread with a specified waiting time. A thread is in the timed waiting state due to calling one of the following methods with a specified positive

Java并发编程初级篇(三):线程状态以及状态转换过程

醉酒当歌 提交于 2019-11-27 16:04:47
线程状态: NEW:当一个线程被创建之初,那么此时线程就是新生状态,此状态下线程已经分配完毕内存空间。 RUNNABLE:当调用Thread.start()方法后,线程进入就绪状态,此时线程并不会马上开始执行。需要等待JVM选中并分配CPU时间才能开始执行。 RUNNING:线程被分配CPU时间后,进入执行状态,在此状态下会运行run()方法中定义的代码。 BLOCKED:当处于运行状态的线程,调用一个被阻塞的方法;试图获取一个正在被其他线程占用的锁,都会进入阻塞状态。 WAITING:等待状态。当调用了 Object.wait() ; Thread.join() ; LockSupport.park() ;方法后线程会进入等待状态。调用 Object.wait() 的线程会等待 Object.notify() 方法的调用而重新进入就绪状态。调用 Thread.join() 方法的线程会等待调用方法线程执行结束而进入结束状态。 TIMED_WAITING:固定时间等待状态。此状态下的线程都有一个固定的等待时间,通过调用 Object.wait(Long) , Thread.sleep(Long) , Thread.join(Long) ,都会让线程进入此状态。处于此状态的线程会等待指定的时间,然后恢复执行。 TERMINATED:线程执行结束。 状态转换图: 线程状态转换函数: