java线程周期,线程的生命周期要经历哪些状态

  java线程周期,线程的生命周期要经历哪些状态

  00-1010首先,线程的状态是新创建(初始)就绪(可运行)。第二,线程的状态转换。第三,线程的生命周期。

  

目录

 

  NEW:安排了工作,但还没开始。RUNNABLE:可以工作。也可以分为正在工作和即将开始工作。堵:就是排队等别的东西。等3360就是排队等别的东西。TIMED _ WAITING:表示排队等其他事情。TERMINATED:完了。

  00-1010当你继承了Thread类,实现了Runnable接口,就可以创建一个线程,一个新的对象就是初始状态。

  00-1010调用线程的start()方法,这个线程进入runnable状态。当当前线程的sleep()方法结束,其他线程join()结束,等待用户输入结束,一个线程获得对象锁,这些线程也会进入runnable状态。当当前线程的时间片用完时,调用当前线程的yield()方法,当前线程将进入可运行状态。池中的线程获得对象锁后,进入runnable状态。

  00-1010 runnable线程获取cpu时间片,执行程序代码,到达运行状态。

  00-1010阻塞状态是指线程因为某种原因放弃使用cpu的权利,即放弃cpu时间片,暂时停止运行。在线程进入可运行状态之前,没有机会让cpu时间片再次转向运行状态。

  当前线程T调用Thread.sleep()方法,当前线程进入阻塞状态。当前线程中运行的其他线程t2调用join()方法,当前线程进入阻塞状态。在等待用户输入时,当前线程进入阻塞状态。

  00-1010当一个线程的run()方法结束,或者主线程的main()方法结束,我们就认为它死了。这个线程对象可能是活动的,但它不再是一个单独的线程。线程一旦死亡,就无法复活。在死线程上调用start()方法会引发Java . lang . illegalthreadstateexception异常异常。

  

一、线程的状态

新的、可运行的、终止的状态转换

 

  使用isAlive方法确定线程的生存状态。

  公共类ThreadStateTransfer { public static void main(String[]args)抛出interrupted exception { Thread t=new Thread(()-{ for(int I=0;i 1000 _ 0000I) {}},‘李四’);system . out . println(t . getname() : t . getstate());t . start();while(t . isa live()){ system . out . println(t . getname() : t . getstate());} system . out . println(t . getname() : t . getstate());}}yield()方法,放弃CPU执行权

  /** * yield放弃CPU执行权*/public类threadyield { public static void main(string[]args){ thread thread=new thread(()-{ thread t1=thread . current thread());for(int I=0;i 10I) {//放弃CPU执行权thread . yield();system . out . println( thread t1 . getname()已执行);}},‘张三’);thread . start();//创建并启动线程new thread(()-{ thread t1=thread . current thread();for(int I=0;i 10I){ system . out . println( thread t1 . getname()已执行);}},‘李四’)。start();}结论

  Yield不会改变线程的状态,但会重新排队。

  00-1010新增:创建线程对象就绪:线程有资格执行,但没有执行权运行:有资格执行,但被阻塞:由于某些操作使线程改变状态,所以没有资格执行,没有执行权,其他操作可以激活,激活处于就绪状态。死亡:线程对象变成垃圾,在这里等待回收。本文深入探讨了Java线程的状态和生命周期。有关Java线程状态的更多信息,请搜索以前关于流行它的文章或继续浏览下面的相关文章。我希望你能支持在未来盛行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: