zoukankan      html  css  js  c++  java
  • Java线程状态

    线程的状态

    1、新建(new):当线程被创建时,他只会短暂地处于这种状态。此时它已经分配了必需的系统资源,并执行了初始化,此刻线程已经有资格获去CPU时间了,之后调度器将把这个线程转变为可运行状态或阻塞状态。

    2、就绪(Runnable):在这种状态下,只要调度器把时间片分给线程,线程就可以运行。也就是说,在任意时刻,线程可以运行也可以不运行。只要调度器能分配时间片给线程。他就可以运行;这不用于死亡和阻塞状态。

    3、阻塞(Blocked):线程能够运行,但有某个条件阻止他运行。当线程处于阻塞状态是,调度器将忽略线程,不会分配给线程任何CPU时间。知道线程重新进入了就绪状态,它才有可能执行操作。

    4、死亡(Dead):处于死亡或终止状态的线程将不再是可调度的,并且再也不会得到CPU时间,他的任务已经结束,或不再是可运行的。任务死亡的通常方式是从run()方法返回,但是任务的线程还可以被中断。

     阻塞

    一个线程进入阻塞状态,可能有如下原因:

    1. 通过调用sleep(milliseconds)使任务进入休眠状态,在这种情况下,任务在指定时间内不会运行。
    2. 通过调用wait()使线程挂起,直到线程得到了notify()或notifyAll()消息(或者在Java SE 5)的java.util.concurrent类库中等价的sinal()或singnalAll()消息),线程才会进入就绪状态。
    3. 任务在等待某个输入/输出完成
    4. 任务试图在某个对象上调用其同步控制方法,但是队形锁不可用,因为另一个任务已经获取这个锁。
  • 相关阅读:
    linux 备份当前文件
    zz Apache 2.2.15 + PHP 5.3.2+ mysql windows环境配置
    zz iframe父子窗口间js方法调用
    批处理命令里获取本机的机器名
    Cache Concurrency Problem False Sharing
    因为添加assembly到GAC引起的Windows Azure Web Role部署失败
    求数组中满足a[i]<a[j]的相距最远的元素
    Dispose模式
    比较汇编指令 LEA 和 MOV
    读写Unicode字符串(UTF8,UTF16…)
  • 原文地址:https://www.cnblogs.com/oskyhg/p/7069298.html
Copyright © 2011-2022 走看看