当前位置:网站首页>The Thread State,
The Thread State,
2022-08-10 22:04:00 【InfoQ】
前言
絮叨
线程状态转换图

- NEW 初始状态
- RUNNABLE 运行状态
- BLOCKED 阻塞状态
- WAITING 等待状态
- TIME_WAITING 超时等待状态
- TERMINATED 终止状态
阻塞与等待的区别
主要操作
start()
public synchronized void start() {
//判断是否首次启动
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
//启动线程
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
/* do nothing. If start0 threw a Throwable then
it will be passed up the call stack */
}
}
}
private native void start0();
run()
sleep()
sleep(long millis) //参数为毫秒
sleep(long millis,int nanoseconds) //第一参数为毫秒,第二个参数为纳秒
yield()
join()
1 join()
2 join(long millis) //参数为毫秒
3 join(long millis,int nanoseconds) //第一参数为毫秒,第二个参数为纳秒
public final synchronized void join(long millis) throws InterruptedException {
long base = System.currentTimeMillis();
long now = 0;
if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
//0You need to wait until the target threadrun完
if (millis == 0) {
while (isAlive()) {
wait(0);
}
} else {
//If the target thread is notrunis finished and the blocking time has not expired,Then the calling thread will wait forever.
while (isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
interrupt()
- 如果线程sleep()、wait()、join()等处于阻塞状态,那么线程会定时检查中断状态位如果发现中断状态位为true,则会在这些阻塞方法调用处抛出InterruptedException异常,并且在抛出异常后立即将线程的中断状态位清除,即重- New set tofalse.抛出异常是为了线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求.
- 如果线程正在运行、争用synchronized、lock()等,那么是不可中断的,他们会忽略.
- isInterrupted()
- 此方法只会读取线程的中断标志位,并不会重置.
- interrupted()
- 此方法读取线程的中断标志位,并会重置.
- throw InterruptException
- 抛出该异常的同时,会重置中断标志位.
结尾

日常求赞
边栏推荐
猜你喜欢

shell脚本循环语句for、while语句

ACM解题笔记——HDU 1401 Solitaire(DBFS)

shell(文本打印工具awk)

【PCBA scheme design】Bluetooth skipping scheme

使用SylixOS虚拟串口,实现系统串口自由

Huawei router clock near the drainage experiment (using stream strategy)

Use Cloudreve to build a private cloud disk

xshell (sed command)

Conditional Statements of Shell Programming (2)

12 Recurrent Neural Network RNN2 of Deep Learning
随机推荐
化学制品制造业数智化供应链管理系统:建立端到端供应链采购一体化平台
xshell (sed command)
shell (text printing tool awk)
Black cat takes you to learn Makefile Part 12: Summary of common Makefile problems
JVM经典五十问,这下面试稳了
ENVI感兴趣区ROI文件由XML格式转为ROI格式
ArcMap创建镶嵌数据集、导入栅格图像并修改像元数值显示范围
2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
CGO Preliminary Cognition and Basic Data Type Conversion
LeetCode每日一题(1573. Number of Ways to Split a String)
Labelme-5.0.1 version edit polygon crash
FPGA - Memory Resources of 7 Series FPGA Internal Structure -03- Built-in Error Correction Function
Shell编程规范与变量
PROCEDURE :存储过程结构——《mysql 从入门到内卷再到入土》
GAN CFOP
2022.8.9 Mock Competition
着力提升制造业核心竞争力,仪器仪表产业迎高质量发展
阿里巴巴、蚂蚁集团推出分布式数据库 OceanBase 4.0,单机部署性能超 MySQL
ThreadLocal comprehensive analysis (1)
黑猫带你学Makefile第11篇:当头文件a.h改变时,如何将所有依赖头文件a.h的.c文件都重新编译