Java线程从零开始(三)——进一步认识线程之生命周期

来源:互联网 发布:太平洋官方软件 编辑:程序博客网 时间:2024/05/16 00:38

在了解了什么是线程和进程,怎么创建线程之后,再来深入理解线程


线程的生命周期

线程是一个动态执行的过程,它也有一个从产生到死亡的过程,这个就叫做线程的生命周期,线程的生命周期有五种状态:

1、新建(new Thread)

      当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。

      例如:

Thread t1 = new Thread();

2、就绪(Runnable)

      线程被启动,准备运行,但是不一定立马就能开始执行。因为线程正在就绪队列中等待CPU分配资源,若同时有多个线程处于就绪状态,都在准备运行,那他们就需要排队,这个就是就绪队列。

      启动线程例子:

t1.start();

3、运行(Running)

      线程从就绪队列中排队结束,获取到CPU分配的资源,并开始执行线程的代码。此时,除非该线程主动放弃CPU资源或者有更高优先级的线程进入,否则线程将一直运行到结束。


4、阻塞(Blocked)

     由于某种原因导致正在运行的线程让出CPU资源并暂停自己的执行,即进入阻塞状态,需要等待外部的处理结束

     存在以下几种情况会出现阻塞:

          1)调用sleep()方法,进入睡眠状态。在指定的睡眠时间过去后可进入就绪状态

          2)调用wait()方法,进入等待状态,调用motify()方法可以使线程重新进入就绪状态

          3)被另一个线程调用suspend()方法所阻塞,调用resume()方法恢复

          4)I/O阻塞

          5)同步阻塞


5、死亡(Dead)

      当线程执行完毕或者被其他线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行

       正常终止:正常运行run()方法后终止

       异常终止:调用stop()方法让一个线程终止运行


图例:


原创粉丝点击