zoukankan      html  css  js  c++  java
  • 基础回顾-线程的几种状态

    线程作为一个程序最基本的组成部分,在Java中存在好几种状态

    1. NEW: 一个刚创建出来的线程处于该状态下,由于只有刚刚被创建的时候可能处于该状态,所以该状态只能被存在一次
    2. RUNNABLE: 复合状态,包含READY和RUNNING
      • READY:该状态的线程可以被JVM的线程调度器进行调度让处于RUNNING状态
      • RUNNING:表示处于该状态的线程正在运行
        调用方法举例:
      • Thread.yield()调用会将对应线程从RUNNING->READY
    3. BLOCKED: 一个线程发起一个阻塞I/O操作后,或者试图去获得一个由其他线程持有锁时候,相对应的线程会处于该状态,处于该状态的线程不会占用CPU资源
    4. WAITING:一个线程执行了某些方法调用之后就会处于这种无限等待的状态
      • 调用方法使得线程变更WAITING方法:
        • Object.wait()
        • Thread.join()
        • LockSupport.park()
      • 将WAITING方法变成RUNNABLE:
        • Object.notify()
        • Object.notifyAll()
        • LockSupport.unpark(thread)
    5. TIMED_WAITING:和WAITING类似,有限时间的等待
    6. TERMINATED: 已经执行结束的线程处于该状态。
  • 相关阅读:
    trie树
    基数排序
    CF724E Goods transportation 最小割 DP
    [CQOI2009]跳舞 网络流
    NOIP2018爆零记
    斜率优化
    CF311B Cats Transport 斜率优化DP
    逆元
    卡特兰数
    【BZOJ】【1565】【NOI2009】PVZ 植物大战僵尸
  • 原文地址:https://www.cnblogs.com/lonecloud/p/13720822.html
Copyright © 2011-2022 走看看