java线程的生命周期的五种状态,java多线程的五种状态

  java线程的生命周期的五种状态,java多线程的五种状态

  线程的状态

  线程有以下六种状态:

  新建(新创建的)

  可运行的

  已阻止(已阻止)

  等待(等待)

  定时等待(定时等待)

  已终止(已终止)

  其中,要获取一个线程的当前状态,可以调用getState方法。

  推荐相关java视频:java视频

  接下来,解释每种状态。

  1.新创建线程(New)

  当我们使用new运算符创建一个线程时,比如使用new Thread(r),线程还没有开始运行,线程中的代码还没有开始执行,所以就变成了New。

  2.可运行线程(Runnable)

  当我们在一个线程上执行start()方法时,它将启动这个线程。然而,注意,处于可运行状态的线程可能正在运行,也可能没有运行,这取决于操作系统的时间片调度。抢占式调度系统会给每个线程分配一个时间片来运行。时间片用完之后,操作系统会剥夺其运行的权利,根据优先级选择下一个线程运行。

  3.被阻塞、等待状态(Blocked、waiting、Timed waiting)

  当线程处于阻塞和等待状态时,它不做任何工作,也不执行任何代码。直到操作系统重新激活它。

  当线程试图获取由其他线程持有的内部对象锁时,该线程将进入阻塞状态。当其他线程释放锁并且线程调度器允许该线程持有锁时,该线程将变为非阻塞状态。

  当一个线程等待另一个线程通知调度程序某个条件时,它自己进入等待状态,然后调用Object.wait方法或Thread.join方法,就会发生这种情况。阻塞状态与等待状态截然不同。

  一些方法有超时参数。它们的调用导致线程进入定时等待状态,该状态将一直保持到超时结束或收到适当的通知。带有超时参数的方法有:Thread.sleep和Object.wait、Thread.join、Lock、tryLock和Condition.await的定时版本

  4.被终止的线程

  线程终止有两个原因:

  因为run()方法执行完毕正常退出

  因为一个没有捕获的异常而终止了run方法导致意外死亡

  5.总结

  如何解决写爬虫IP受阻的问题?立即使用。

  相关文章教程推荐:java编程入门以上是java高级知识3354线程六种状态的详细介绍。请多关注我们的其他相关文章!

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

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