多线程---线程状态(五大状态)
视频参考:
线程停止:stop()
package com.mokuiran.thread;
/*
测试stop
1.建议线程正常停止-->利用次数,不建议死循环
2.建议使用标志位-->设置一个标志位
3.不要使用stop或者destroy等过时或者JDK不见使用的方法
*/
public class TestStop implements Runnable {
//1.设置一个标示位
private boolean flag = true;
线程休眠:sleep()
单位换算:1000ms = 1s;
案例
package com.mokuiran.thread;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSleep2 {
public static void main(String[] args){
// tenDown();
//打印当前系统时间
Date date = new Date(System.currentTimeMillis());//获取系统当前时间
while (true){
try {
Thread.sleep(1000);
System.out.println(new SimpleDateFormat("HH:mm:ss").format(date));
date = new Date(System.currentTimeMillis());//更新当前时间
} 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()
案例
package com.mokuiran.thread;
import org.omg.PortableServer.THREAD_POLICY_ID;
//测试礼让线程
//礼让不一定成功,看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()
-
Join合并线程,待此线程执行完成后,在执行其他线程,其他线程阻塞
-
可以想象成插队
package com.mokuiran.thread;
//测试join方法
//想象为插队
public class TestJoin implements Runnable{
线程状态观测:Thread.State
线程状态。 线程可以处于以下状态之一:
线程在给定时间点只能处于一种状态。 这些状态是虚拟机状态,不反映任何操作系统线程状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~