多线程的生命周期---理解Java里的线程状态

来源:互联网 发布:淘宝客网站如何推广 编辑:程序博客网 时间:2024/05/29 19:40
     点击进入原文

       理解线程的生命周期和线程状态对于使用多线程以及在多线程的环境下编程是非常重要的。

       创建一个Java的多线程,我们可以通过实现Runnable借口或者继承Thread来实现。要启动一个线程,首先要创建线程的一个对象,然后调用Start()方法来启动一个线程。

       下图展示了Java中线程的各个状态。注意,我们在Java里面创建并启动线程,但是线程怎样从Runnable--> Running-->Blocked/Wariting 状态,却依赖于实现线程调度器的操作系统。Java没有充分的控制权。

      当我们使用new操作符创建一个线程对象时,线程的状态是New(创建状态)。在这个时候,线程并不是存活的,这只是Java的一个内部状态。

      当我们调用线程的start()方法时,线程的状态将变成Runnable,同时Java将线程的控制权交给线程调度器,由线程调度器来完成接下来的工作。接下来是立即执行这个线程还是将这个线程放入可执行线程池中是由操作系统来决定的。

     当线程被执行时,它的状态将变成Running。线程调度器从线程池中挑选出一个可执行的线程,然后将它的状态改为Running,同时CPU开始执行这个线程。当时间片结束或者执行完了run()方法或者等待其他资源时,线程的状态将变成RunnableDeadBlocked

      一个线程可能在等待子线程的完成或者等待其他的资源,比如生产者消费者或者等待IO资源,这时线程将变成Waiting。当Waiting状态一结束,这个线程将变成Runnable,然后重新回到可执行的线程池中。

     当一个线程执行完成后,它就变成了Dead状态。这个时候认为它不再是存活的线程。

0 0
原创粉丝点击