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: 已经执行结束的线程处于该状态。
  • 相关阅读:
    Shell基本语法
    CURL简单使用
    <C> 字符串简单习题
    <C> 字符串相关的函数
    <C> 内存分区
    <C> 最大值以及最大值下标 二分查找(折半查找)
    <C> 函数 函数指针
    <C> 冒泡排序及其非常非常非常简单的优化
    <C> typedef 宏 const 位运算
    <C> 数组
  • 原文地址:https://www.cnblogs.com/lonecloud/p/13720822.html
Copyright © 2011-2022 走看看