Java中线程的生命周期是怎样的?

提问者:帅平 问题分类:面试刷题

Java中线程的生命周期是怎样的?

1 个回答
Rae
Rae 管理员

1.new Thread表示NEW状态。

2.调用start方法来到运行(RUNNABLE)状态。

3.等待synchronized方法或模块的时候到(BLOCKED)阻塞状态。获取锁后又来到(RUNNABLE)状态。

4.调用Object的wait方法、Thread的join方法、LockSupport的park方法来到(WAITING)等待状态。反之,调用Object的notify方法、Object的notifyAll方法、LockSupport的unpark ( Thread )方法状态又回到(RUNNABLE)状态。

5.调用Thread的sleep(long)方法、Object的wait(long)方法、Thread的join(long)方法、LockSupport的parkNnos()方法、LockSupport的parkUnit方法来到(TIMED_WAITING)超时等待状态。反之,调用Object的notify方法、Object的notifyAll方法、LockSupport的unpark ( Thread )方法状态又回到(RUNNABLE)状态。

6.线程执行完成后来到(TERMINATED)终止状态。

发布于:1个月前 (10-23)
Rae
Rae管理员

再附上一张图直观的表达整个过程:

发布于:1个月前 (10-23)
我来回答