【并发编程】线程生命周期

状态流转总图

0.新建状态New

  • Thread类
  • 实现了Runnable接口
    • run()
  • Runnable接口
    • run(),通过Thread类或线程池来使用
  • Callable接口
    • 作为FutureTask构造方法参数使用
    • call方法,有返回值,且可以抛出异常
    • call方法实际是在Runnable的run方法中被执行

1.就绪状态Runnable

  • 调用线程的start()方法
  • 不一定会立即运行,可能需要等待CPU分配时间片

2.运行状态Running

  • 就绪线程分到CPU时间片,开始执行run()代码。

3.阻塞状态Blocked

  • 等待同步锁的状态

4.等待Waiting

  • Object.wait()
  • Thread.join()
  • LockSupport.park()

5.超时等待Timed-Waiting

  • 与Waiting状态不同在于不会一直等待,而是等待指定的时间
  • Thread.sleep(time)
  • Object.wait(long timeout)
  • Thread.join(long timeout)
  • LockSupport.parkNanos(time)
  • LockSupport.parkUntil(time)

6.终结状态Terminated

  • 当线程运行完毕即死亡
  • 抛出异常
发布了113 篇原创文章 · 获赞 102 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sarafina527/article/details/104945041