当前位置:网站首页>线程面试相关问题
线程面试相关问题
2022-06-10 16:00:00 【张志明(努力奋斗版)】
线程有哪些状态?
Java线程中一共有6种状态,分别为:NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED、TERMINATED,其中RUNNABLE包含READY和RUNNING状态,详情可见下图:


- 【NEW】:初始状态,线程被构建,但是还没有调用 start 方法
- 【RUNNABLE】:在Java中包括两种状态,RUNNING和READY
READY:就绪态,该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行;所有就绪态的线程存放在就绪队列中
RUNNING:获得cpu时间片,正在执行的线程;由于每个cpu同一时刻只能执行一条线程,因此每个cpu每个时刻只有一条线程运行。
- 【BLOCKED】:阻塞状态,表示线程进入等待状态,也就是线程因为某种原因放弃了 CPU 使用权,阻塞也分为几种情况 :
- 等待阻塞:运行的线程执行了 Thread.sleep 、wait()、 join() 等方法JVM 会把当前线程设置为等待状态,当 sleep 结束、join 线程终止或者线程被唤醒后,该线程从等待状态进入到阻塞状态,重新抢占锁后进行线程恢复
- 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被其他线程锁占用了,那么jvm会把当前的线程放入到锁池中
- 其他阻塞:发出了 I/O请求时,JVM 会把当前线程设置为阻塞状态,当 I/O处理完毕则线程恢复
- 【WAITING】:进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)
- 执行wait()、join()、LockSupport.park()
- 【TIMED_WAITING】:超时等待状态,该状态不同于WAITING,它可以在指定的时间后自行返回
- 执行 Thread.sleep(long)、wait(long)、join(long)、LockSupport.park(long)、LockSupport.parkNanos(long)、LockSupport.parkUntil(long)
- 【TERMINATED】:终止状态,表示当前线程执行完毕
线程调用start方法是立即执行了吗 ?
线程不是马上执行的;准确来说,调用start( )方法后,线程的状态从 new 的状态 变成 “READY(就绪)”状态,而不是“RUNNING(运行中)”状态。线程要等待CPU调度,不同的JVM有不同的调度算法,线程何时被调度是未知的。因此,start()方法的被调用顺序不能决定线程的执行顺序
Java线程6种状态 VS 5种状态
操作系统层面有5种状态(新建、就绪、运行、阻塞、终结)
①分到CPU时间的:运行
②可以分到CPU时间的:就绪
③分不到CPU时间的:阻塞
Java中的RUNNABLE涵盖了就绪、运行、阻塞I/O
- 【新建状态】:仅是在语言层面创建了线程对象,还未与操作系统线程关联
- 【可运行状态(就绪状态)】:指该线程已经被创建(与操作系统线程关联),可以由CPU调度执行
- 【运行状态】:指获取了CPU时间片运行中的状态
- 当CPU时间片用完,会从【运行状态】切换至【可运行状态】,会导致线程上下文切换
- 【阻塞状态】
- 如果调用了阻塞API,如BIO读写文件,这时该线程实际不会用到CPU,会导致线程上下文切换,进入【阻塞状态】
- 等BIO操作完毕,会由操作系统唤醒阻塞的线程,转换至【可运行状态】
- 与【可运行状态】的区别是,对【阻塞状态】的线程来说只要它们一直不唤醒,调度器就一直不会考虑调度它们
- 【终止状态】:表示线程已经执行完毕,生命周期已经结束,不会再切换为其它状态
边栏推荐
- script 标签自带的属性
- Hoo Hufu Research Institute | noteworthy track in March 2022
- Devops-1- introduction
- Postman common assertions
- Only by truly finding the right way to land and practice the meta universe can we ensure the steady and long-term development
- Tactile intelligent sharing-a133 application in laryngoscope
- MySQL如何修改字段类型和字段长度
- [untitled]
- 圆周率 π 小数点第 100 万亿数字是多少?Google 用 Debian 服务器给出了答案
- Basic settings of pycharm [detailed explanation with pictures and words]
猜你喜欢

IDEA的Swing可视化插件JFormDesigner

This paper introduces three feature selection methods in machine learning

Fiddler设置断点

Rethinking atlas revolution for semantic image segmentation (deeplobv3) personal summary

What open source tools are actually used in the black cool monitoring interface?

You have a ml.net quick reference manual to check!

Live broadcast preview | a new era of social interaction, exploring new social experiences in the universe

New York financial regulators issue official guidelines for stable currency

互联网企业与芯片

Build a leading privacy computing scheme impulse online data interconnection platform and obtain Kunpeng validated certification
随机推荐
Analysis report on marketing status and demand potential of China's acetate starch industry 2022-2028
Enroulez - vous, brisez l'anxiété de 35 ans, l'animation montre le processeur enregistrer le processus d'appel de fonction, entrer dans l'usine d'interconnexion est si simple
Why do I need a thread pool? What is pooling technology?
打造隐私计算领先方案 冲量在线数据互联平台获得鲲鹏Validated认证
AI video cloud: a good wife in the era of we media
“禁塑令”下,中宝新材深挖可降解塑料,港交所买单吗?
新思科技助力以色列Visuality Systems推进安全“左移”
毕业季:致走向辽远未知的你
智慧景區視頻監控 5G智慧燈杆網關組網綜合杆
PyTorch基础(一)-- Anaconda 和 PyTorch安装
简单实现文件上传
防洪排涝监控 防洪排涝自动监测遥测终端
Fiddler过滤会话
STM32 printf garbled
接口测试学习笔记
Global and Chinese intelligent elderly care system industry 2 competition analysis and Investment Strategic Planning Research Report 022-2028
Software College of Shandong University Project Training - Innovation Training - network security range experimental platform (16)
STOP在屏幕程序的应用_SAP刘梦_
Why do I need a thread pool? What is pooling technology?
Research Report on the development scale of Chinese sanatorium industry and the 14th five year plan (2022-2028)