020-29815005
预约专线时间:09:00-23:59

Java线程的状态

新闻来源:本站 日期:2021-07-01
java中线程状态呀哪些,我们一起来了解一下
    在Java中,线程被分为6种状态。

    1.Initiative(NEW):新创建了线程对象,但尚未调用start()方法。

    2.运行(RUNNABLE):Java线程准备阶段(ready)和运行中状态(running)一般称为“运行”。

    在创建线程对象之后,其他线程(如main线程)就会调用该对象的start()方法。这个状态下的线程位于一个可运行的线程池中,等待线程计划选中,以获得CPU的使用权限,此时(ready)。在获取CPU时间片之后,就绪状态的线程将成为运行中状态(running)。

    3.阻塞(BLOCKED):表示线程阻塞了锁。

    4.等待(WAITING):进入该状态的线程需要等待另一个线程作出某些特定动作(通知或中断)。

    5.超时等待(TIMED_WAITING):状态与WAITING不同,它可以在指定的时间之后自动返回。

    6.终止(TERMINATED):指示线程已被执行。


优漫动游


    1.初始状态。

    Runnable接口的实现和Thread的继承都可以得到线程类,new一个实例出来,线程进入初始状态。

    2.1.准备状态。

    准备状态仅仅说明你有资格运行,而调度程序没有选择你,那么您将永远处于准备状态。

    用start()方法调用线程,该线程进入就绪状态。

    目前线程sleep()方法的末尾,其他线程join()结束,等待用户输入完成,其中一个线程获得对象锁,而这些线程也将进入就绪状态。

    现在的线程没有时间片,调用当前线程的yield()方法,当前线程进入就绪状态。

    锁池中的线程在获得对象锁之后进入就绪状态。

    2.2.正在运行状态。

    当线程从可运行池中选择一个线程作为当前线程时,线程处于的状态。它也是线程进入运行状态的唯一方法。

    3.阻碍因素。

    封锁状态是当方法或代码块的状态(获取锁定)进入synchronized关键字修饰时,线程阻塞的状态。

    4.等待。

    在此状态下的线程不分配CPU执行时间,它们必须等待显式地唤醒,否则将处于无限期等待状态。

    5.等待时间过长。

    在此状态下的线程将不分配CPU执行时间,尽管不必无限期地等待被其他线程的显示唤醒,在达到某一时间后它们将自动唤醒。

    6.终止状态。

    如果线程的run()方法完成,或主线程的main()方法完成,我们认为它已经终止。该线程对象可能是活的,然而,它不再是单独执行的线程。当线程终止后,线程将无法再生成。

    对已终止线程调用start()方法,引发java.lang.IllegalThreadStateException异常。