线程状态
创建状态、就绪状态、运行状态、阻塞状态、死亡状态
线程停止
package com.thread.state;
//测试stop
//1.建议线程正常停止——>利用次数,不建议死循环
//2.建议使用标志位——>设置一个标志位
public class TestStop implements Runnable{
//1.设置一个标志位
private boolean flag = true;
线程休眠_sleep
-
sleep (时间)指定当前线程阻塞的毫秒数,1000毫秒=1秒;
-
sleep存在异常InterruptedException;
-
sleep时间达到后线程进入就绪状态;
-
sleep可以模拟网络延时,倒计时等;
-
每一个对象都有一个锁, sleep不会释放锁。
package com.thread.state;
//模拟倒计时
public class TestSleep2 {
public static void main(String[] args) {
try {
tenDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//模拟倒计时
public static void tenDown() throws InterruptedException {
int num = 10;
while(true){
Thread.sleep(1000);
System.out.println(num--);
if (num<=0){
break;
}
}
}
}
线程礼让_yield
-
礼让线程:当前正在执行的线程暂停(A),但不阻塞
-
线程(A)从运行状态转为就绪状态
-
让CPU重新调度(A和B),但再次调度还是看CPU心情让谁先进,所以礼让不一定成功!!
package com.thread.state;
//礼让线程
//礼让不一定成功,看CPU心情
public class TestYield {
public static void main(String[] args) {
MyYield myYield = new MyYield();
new Thread(myYield,"a").start();
new Thread(myYield,"b").start();
}
}
class MyYield implements Runnable{
线程强制执行_join
-
可以想象成插队
-
待此线程执行完后,再执行其他线程
package com.thread.state;
import com.exception.demo01.Test;
//测试join方法
public class TestJoin implements Runnable{
观测线程状态
package com.thread.state;
//观察测试线程的状态
public class TestState {
//线程体
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(()->{
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("/////////");
});
//观察状态(目前应该是new)
Thread.State state = thread.getState();
System.out.println(state);//new
//观察启动后(应该是run)
thread.start();//启动线程
state = thread.getState();
System.out.println(state);//run
//只要线程不终止,就一直输出状态
while(state!=Thread.State.TERMINATED){
Thread.sleep(100);//每0.1秒更新一次状态
state = thread.getState();//更新线程状态
System.out.println(state);//输出状态
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现