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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。