思诚科技 seecen LOGO
咨询热线:0791-87557233
 您现在的位置:  首页 > Java EE 

Java线程生命周期深入理解

来源:思诚科技    更新时间:2018-2-1

当你需要使用Java线程在多线程环境下进行编程时,理解Java的线程周期与线程的状态是非常重要的。通过实现Runnale接口或者继承Thread类,我们可以创建线程,为了启动一个线程,我们需要创建一个Thread对象,并且调用它的start()方法,以便以线程的方式来执行run()方法。

Java中的线程生命周期

下面的图展示在Java中线程的不同状态,我们可以创建一个Java线程,并调用start()方法来启动它,但是线程的状态是如何从Running变为Blocked,这依赖与操作系统实现的线程调度算法,Java对此并没有足够的控制权。

New

当我们创建一个新线程对象的时候,需要时候new操作符,此时线程的状态便是New。在这个时候,线程并不是可被调度的,它只是Java语言的一个内部状态。

Runnable

当我们调用Thread对象的start()函数时,它的状态变为Runnable。控制权被给予线程调度程序来完成它的执行。是否立即运行此线程或在运行之前将其保持在可运行线程池中,取决于线程调度程序的实现。

Running

线程正在执行时,状态变为Running。线程调度程序从可运行线程池中选择一个线程,并将其状态更改为正在运行,然后CPU开始执行这个线程。一个线程可以将正在运行的进程状态更改为Runnable,Dead或Blocked。在该状态时,线程将执行run()方法的逻辑。

Blocked/Waiting

一个线程可以通过join()方法,去等待另外一个线程的执行完成;也可以等待一些资源可用,例如生产者消费者问题或IO资源,此时线程的状态将变为Waiting。线程等待状态结束后,状态变为Runnable,并移回到可运行线程池。

Dead

一旦线程完成执行,它的状态就变成Dead。

 

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2020