线程的生命周期与线程控制

线程的生命周期包括5中状态:

1、新生状态:用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。

2、就绪:处于就绪状态的线程已经具备了运行条件,但需要进入线程队列,等待系统为其分配CPU,创建新线程有两种方式,这里是实现Runnable接口,下面有例子。

3、运行:在运行状态的线程执行自己的run方法中的代码,直到调用其他方法而终止、或等待某资源而阻塞或完成任务而死亡。

4、阻塞:处于运行状态的线程在某些情况下,如执行了sleep()方法,将让出CPU并暂时终止自己的运行,进入阻塞状态。在本程序中,在下面的例子中线程需要休眠50ms然后给变量i赋值,所以调用sleep()方法,第三空应该填“sleep”.

5、死亡:线程死亡的原因有两个,一是正常运行的线程完成了全部工作;另一个是线程被强制性地终止。

本程序用到的线程控制方法sleep():该方法使一个线程暂停运行一段固定的时间。在休眠时间内,线程将不运行,休眠时间的长短由sleep()方法的参数决定。sleep()方法结束后,线程将进入可运行状态,进行接下来的给变量i赋值的操作。

具体程序如下:

public class Java_2 {
       public static void main (String args[]) {
          try {
             Sleep a = new Sleep ();
             Thread t = new Thread (a);
             //*********Found**********
             t.start();
             t.join();
             int j= a.i;
             System.out.println("j="+j+",a.i="+a.i);
          } catch (Exception e) {}  //catch后面不能有空格
       }
    }

    //*********Found**********
    class Sleep implements Runnable{
       int i;
       public void run () {
          try {
             //*********Found**********
             Thread.sleep(50);
             i= 10;
          }
          //*********Found**********
          catch(InterruptedException e) {}
       }
    }

发布了90 篇原创文章 · 获赞 50 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_40307919/article/details/100578502