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

    一、图解

    ▪ 新建状态(New)

          用new关键字建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。

    ▪ 就绪状态(Runnable)

          处于就绪状态的线程已经具备了运行条件,但是还没有被分配到CPU,处于“线程就绪队列”,等待系统为其分配CPU。就绪状态并不是执行状态,当系统选定一个等待执行的Thread对象后,它就会进入执行状态。一旦获得CPU,线程就进入运行状态并自动调用自己的run方法。有4中原因会导致线程进入就绪状态:

          1. 新建线程:调用start()方法,进入就绪状态;

          2. 阻塞线程:阻塞解除,进入就绪状态;

          3. 运行线程:调用yield()方法,直接进入就绪状态;

          4. 运行线程:JVM将CPU资源从本线程切换到其他线程。

    ▪ 运行状态(Running)

          在运行状态的线程执行自己run方法中的代码,直到调用其他方法而终止或等待某资源而阻塞或完成任务而死亡。如果在给定的时间片内没有执行结束,就会被系统给换下来回到就绪状态。也可能由于某些“导致阻塞的事件”而进入阻塞状态。

    ▪ 阻塞状态(Blocked)

          阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪)。有4种原因会导致阻塞:

          1. 执行sleep(int millsecond)方法,使当前线程休眠,进入阻塞状态。当指定的时间到了后,线程进入就绪状态。

          2. 执行wait()方法,使当前线程进入阻塞状态。当使用nofity()方法唤醒这个线程后,它进入就绪状态。

          3. 线程运行时,某个操作进入阻塞状态,比如执行IO流操作(read()/write()方法本身就是阻塞的方法)。只有当引起该操作阻塞的原因消失后,线程进入就绪状态。

          4. join()线程联合: 当某个线程等待另一个线程执行结束后,才能继续执行时,使用join()方法。

    ▪ 死亡状态(Terminated)

    注:stop()/destroy()方法已经被JDK废弃,不推荐使用

  • 相关阅读:
    姿态估计openpose_pytorch_code浅析(待补充)
    姿态估计之Openpose_原理部分
    win10基础上安装linux系统,添加双系统启动项
    mongodb集群部署
    心无旁骛提升自我
    sqlserver2012 数据库差异备份恢复 记录
    pgsql 常用命令
    pgadmin连接 postgresql远程设置
    vmvare使用桥接和NAT方式连接网络
    使用samba 共享Linux文件到Windows
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12620732.html
Copyright © 2011-2022 走看看