四、线程的生命周期

前言:

  之前我们学习了关于现成的创建的方式,和线程池方面的只是,那么我们来向再想一下关于一个线程从创建到销毁,都经历了哪些阶段,下面来看一下网上的一张,关于线程从创建到销毁生命周期的问题:

  

一、新建阶段:

  在我们用new关键字创建了一个线程后,这个线程就处于新建状态,jvm会为线程分配内存空间,初始化成员变量

二、就绪阶段:

  当我们创建的线程对象调用了start()方法后,该线程就处于就绪阶段,jvm会为计数器和方法栈,等待线程调度器调用。

三、运行状态:

  就绪状态的线程获取到了cpu资源,开始运行run()或call()方法,则该线程进入运行状态。

四、阻塞状态:

  当一个线程正在运行时,如果发生异常或者调用某些方法会使线程进入阻塞状态,具体有以下:

    1、线程调用sleep()方法,主动放弃所占用的处理器资源。

    2、线程在等待某个通知时(notify())。

    2、线程调用了一个阻塞式IO方法,在该方法返回之前都会被阻塞。

    3、线程试图获取一个同步锁,但该同步锁正在被其他线程所拥有的。

    4、程序调用了suspend()方法将线程挂起,但这个方法容易造成死锁,不推荐使用。

五、死亡状态:

  线程在以下情况下会进入死亡状态:

    1、run()、call()执行完成后,线程正常结束

    2、线程抛出了一个未捕获的Exception或err

    3、代用了该线程的stop()方法来结束线程,该方法容易导致死锁不推荐。

 

posted @ 2019-09-08 12:11  は問わない  阅读(181)  评论(0编辑  收藏  举报