阅读 77

时间片用完线程进入什么状态,线程的六种状态

一、线程有哪些状态线程的所有状态如下: born (致命储物柜)、runnable (运行)、running (等待)、sleeping (阻止) )块3358www.Sina.com/runnable类型对象的子除非使用构造函数调用start方法,否则这个新线程将作为新对象保留在内存中,基本上不执行任何操作。 在构造函数或main函数对此线程调用start方法,或者此线程在程序的其他任意位置将他自己的状态从born更改为runnable线程之后,调度程序必须为此线程分配处理器如果将处理器分配给位于runnable上的线程,则该线程的状态为running。 如果处于运行状态的线程能够运行到最后,则她的状态为dead。 否则,此线程的命运取决于当前是否有其他线程正在等待处理器执行。 如果此线程在当前处于runnable状态的所有线程中具有最高优先级,则除非由运行程序的平台将其拆分为时间片,否则他将继续运行。 如果线程被划分为时间片,则会将处于运行状态的线程分配给处理器时间--quantum,该时间是固定间隔。 具有相同优先级的线程的时间片调度将导致这些线程按顺序执行。 如果正在执行的线程的代码包含yield方法,则处于运行状态的线程将停止执行并将处理器传递给其他进程。 可以通过调用sleep ()方法将正在运行的线程转换为sleep状态。 如果一个线程包含长循环,则在每次循环迭代时将该线程切换到sleep状态是一种很好的策略,并且可以向您保证,其他线程不需要等待很长时间才能轮到处理器运行。 当其中一个正在运行的线程进入休眠状态时,其中一个等待的线程将切换到处理器。 在长周期中,还可以使用yield方法代替sleep方法。 在run方法的I/O操作期间,处理器无法从一个线程切换到另一个线程。 此外,还可以适时使用时间片的调度策略。 这称为线程被I/O操作阻止。 转载于:https://www.cn blogs.com/sunwei 2012/archive/2010/03/08/1680826.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐