首页 > 其他分享 >线程状态

线程状态

时间:2023-08-23 15:03:13浏览次数:38  
标签:状态 调用 run start 线程 方法 CPU

线程状态_线程状态

1) 新建

当用new关键字创建一个线程时,还没调用start 就是新建状态。


2) 就绪

调用了 start 方法之后,线程就进入了就绪阶段。此时,线程不会立即执行run方法,需要等待获取CPU资源。

start()方法的作用是:启动一个分支线程,在JVM中开辟一个新的栈空间


3) 运行

当线程获得CPU时间片后,就会进入运行状态,开始执行run方法。

当之前占有的CPU时间片用完之后,会重新回到就绪状态继续抢夺CPU时间片,当再次抢到CPU时间之后,会重新进入run方法接着上一次的代码继续往下执行。


4) 阻塞

当遇到以下几种情况,线程会从运行状态进入到阻塞状态。

调用sleep方法,使线程睡眠。

调用wait方法,使线程进入等待。

当线程去获取同步锁的时候,锁正在被其他线程持有。

调用阻塞式IO方法时会导致线程阻塞。

调用suspend方法,挂起线程,也会造成阻塞。

标签:状态,调用,run,start,线程,方法,CPU
From: https://blog.51cto.com/u_16235022/7203051

相关文章

  • java多线程使用详解与案例,超详细
    一、创建线程的方式1、继承Thread类让子类继承Thread线程类子类必须重写Thread类的run方法创建一个自己定义的线程对象调用start()方法启动线程//测试类/***1、让子类继承Thread线程类*/publicclassThreadTest1extendsThread{//2、子类必须重写Thread类......
  • 自动请求钩子,返回loding状态
    //useAutoRequest.ts/**@Date:2023-02-1009:55:20*@Description:useAutoRequest*/import{Ref,ref}from'vue';typeTApiFun<TData,TParamsextendsArray<any>>=(...params:TParams)=>Promise<TData>;interface......
  • Vue 重置data的数据为初始状态操作
    在某些情况下,需要重新使用data中的数据,但是data中的数据已经被各种表单、变量等赋值,那么怎么重置data的值呢?1.逐个赋值...data(){return{name:'',sex:'',desc:''}}...//逐个赋值this.name=''this.sex=''this.desc=''这个方法比较笨,当然也......
  • Java 多线程处理 for 循环数据
    对于必须在for循环内进行查询的场景,可采用以下几种方式进行优化。1、主线程与子线程无先后顺序publicstaticvoidmain(String[]args)throwsInterruptedException{for(inti=0;i<5;i++){ThreadUtil.execAsync(()->{......
  • 多线程 问答
    1、怎么创建线程池用threadPoolExecutor去创建,核心线程数量,最大线程数量,保活时间,时间单位,工作队列publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,......
  • 雪花算法单线程实现-scala
    雪花算法单线程实现-scala参考blog/***[时间戳][数据标识id][机器id]*/objectSnowFlake{//开始时间(ms)2023-08-0100:00:00privatevalstartTimestamp=1690819200000L//机器id所占的位数privatevalworkerIdBits=5L//数据标识id所占的位......
  • 删除Rancher的空间cattle-system,状态一直是Terminating
    Rancher(一)踩坑记,删除Rancher的空间cattle-system,状态一直是Terminating  订阅专栏kubernetes13篇文章2订阅订阅专栏文章目录一、故障现象二、解决办法问题一(1)问题描述(2)解决方案(3)解释说明本文使用的rancher版本是v2.7.5一、故障现象  在需要导入的集群环境中执行以......
  • python 多线程
    在python中,I/O密集型任务可以用多线程的方式来实现(threading库);然而,对于计算密集型任务,由于python中全局锁GIL的存在,多线程并不能起到一个加速的作用。所以此时,一般使用多进程的方式实现(multiprocessing库)。多线程threading:一个人有与异性聊天和看剧两件事要做。单线程的她可......
  • jmeter详解-线程组详解(9)-bzm - Free-Form Arrivals Thread Group
    bzm-Free-FormArrivalsThreadGroup介绍: 顾名思义,相当于自由形式的ArrivalsThreadGroup,它只是提供了自由形式的时间表的能力。相当于我们可以更灵活的控制 每分钟/每秒钟的请求数。页面说明:ThreadsSchedule(线程场景):Startvalue:开始时的用户数Endvalue:结束时......
  • Qt 多线程简单应用
    声明:QThread*thread;初始化:thread=newQThread();thread->start();将对象放到线程中去:moveToThread(thread);readTimer.moveToThread(thread);readTimer.setSingleShot(true);连接消亡信号:connect(thread,SIGNAL(finished()),this,SLOT(thread_done()));注......