登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
业界
›
Thread 类的基本用法、Java 线程的几种状态 ...
Thread 类的基本用法、Java 线程的几种状态
[ 复制链接 ]
系味
2026-1-10 01:25:02
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
在Java中,Thread类是多线程编程的核心。
线程创建 (Thread Creation)
创建线程主要有两种逻辑:继承Thread类或实现Runnable接口。
方式1:继承 Thread 类,重写run()
// 自定义线程类继承Thread
class MyThread extends Thread {
// 重写run(),定义线程执行逻辑
@Override
public void run() {
System.out.println("子线程执行:" + Thread.currentThread().getName());
}
}
// 使用
public class Demo {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start(); // 3. 调用start()启动线程(不能直接调用run())
}
}
复制代码
方式2:实现Runnable接口,传给Thread
// 实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("子线程执行:" + Thread.currentThread().getName());
}
}
// 使用
public class Demo {
public static void main(String[] args) {
// 把Runnable实例传给Thread
Thread t = new Thread(new MyRunnable());
t.start(); // 启动线程
}
}
复制代码
线程中断 (Thread Interruption)
线程中断不是强制停止线程,而是一种协作机制,即给线程发一个“请停止”的信号。
void interrupt():标记线程为 “中断状态”
boolean isInterrupted():判断线程是否处于中断状态
若线程在sleep/wait/join时被中断,会抛出InterruptedException,且中断状态会被清除
Thread t = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) { // 检测中断状态
System.out.println("线程运行中...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// 捕获中断异常后,中断状态会被清除,需手动终止循环
System.out.println("线程被中断");
Thread.currentThread().interrupt(); // 重新标记中断(可选)
break;
}
}
});
t.start();
// 主线程1秒后中断子线程
Thread.sleep(1000);
t.interrupt();
复制代码
线程等待 (Thread Join)
有时主线程需要等待子线程执行完毕后再继续执行,这时可以使用join()。
t.join():当前线程会进入阻塞状态,直到线程t执行结束。
带参数的 join(long millis):设置最大等待时间,如果超时线程还没结束,当前线程就不再等待。
Thread t = new Thread(() -> {
System.out.println("子线程开始执行");
try { Thread.sleep(2000); } catch (InterruptedException e) {}
System.out.println("子线程执行完毕");
});
t.start();
// 主线程等待t执行完(最多等3秒)
t.join(3000);
System.out.println("主线程继续执行");
复制代码
线程休眠 (Thread Sleep)
static void sleep(long millis):让当前线程暂停指定时间(不会释放锁),抛出InterruptedException
System.out.println("开始休眠");
try {
Thread.sleep(2000); // 当前线程休眠2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("休眠结束");
复制代码
获取线程实例 (Get Current Instance)
在编写通用代码(尤其是 Runnable 中)时,常需要知道是谁在运行。
Thread.currentThread():返回代码当前正在执行的那个线程对象的引用。
常用操作:获取线程 ID (getId())、获取线程名称 (getName()) 等。
// 获取当前线程(这里是main线程)
Thread mainThread = Thread.currentThread();
System.out.println("当前线程名:" + mainThread.getName()); // 输出"main"
// 子线程实例
Thread t = new Thread(() -> {
Thread current = Thread.currentThread();
System.out.println("子线程名:" + current.getName()); // 输出"Thread-0"
});
t.start();
复制代码
Java线程的几种状态
线程状态一共有几种?
Java线程共有6种状态:
NEW (新建)
RUNNABLE (可运行)
BLOCKED (阻塞)
WAITING (等待)
TIMED_WAITING (超时等待)
TERMINATED (终止)
每种状态的含义与切换条件
NEW (新建)
含义:创建了线程对象(new Thread()),但尚未调用 start() 方法。
切换:调用 start() 方法后,进入 RUNNABLE 状态。
RUNNABLE (可运行)
含义:Java 将操作系统中的“就绪(Ready)”和“运行中(Running)”两种状态统称为 RUNNABLE。处于该状态的线程可能正在 CPU 上执行,也可能正在等待操作系统分配时间片。
切换:
就绪 -> 运行:获得 CPU 时间片。
运行 -> 就绪:CPU 时间片用完,或主动调用 Thread.yield()。
BLOCKED (阻塞)
含义:线程正在等待获取一个排他锁(如进入synchronized 代码块/方法),但该锁目前被其他线程持有。
切换:
RUNNABLE -> BLOCKED:尝试进入 synchronized 区域失败。
BLOCKED -> RUNNABLE:其他线程释放锁,当前线程成功竞争到锁。
WAITING (等待)
含义:线程处于无限期的等待状态,不会被分配 CPU 时间,必须等待其他线程显式地唤醒。
切换:
RUNNABLE -> WAITING:调用 Object.wait()(不带参数)、Thread.join()(不带参数)或 LockSupport.park()。
WAITING -> RUNNABLE:其他线程调用 Object.notify()、notifyAll() 或 LockSupport.unpark()。
TIMED_WAITING (超时等待)
含义:与 WAITING 类似,但在指定的时间后会自动唤醒,不需要其他线程显式唤醒。
切换:
RUNNABLE -> TIMED_WAITING:调用 Thread.sleep(ms)、Object.wait(ms)、Thread.join(ms) 等带时间参数的方法。
TIMED_WAITING -> RUNNABLE:时间结束,或被提前唤醒(如 notify())。
TERMINATED (终止)
含义:线程已经执行完毕(run() 方法正常结束)或因异常退出了执行。
切换:线程一旦进入此状态,生命周期结束,不可再次启动(再次调用 start() 会抛出异常)。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Thread
基本
用法
Java
线程
相关帖子
C语言基本数据类型与类型提升机制
(面试题)Netty 线程模型
Java 操作 Markdown(1)--commonmark-java 使用
类字节码:揭开Java虚拟机运行机制的神秘面纱
《软件测试策略》——工具与自动化的基本问题(五)
《软件测试策略》——工具与自动化的基本问题(五)
Python Conda的基本认识整理
调试排错 - 线程Dump分析
dplyr和tidyr用法
[AI应用框架/Java] Spring AI 应用开发指南
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
C语言基本数据类型与类型提升机制
0
32
迭婵椟
2026-03-11
业界
(面试题)Netty 线程模型
0
520
揉幽递
2026-03-11
代码
Java 操作 Markdown(1)--commonmark-java 使用
0
366
哈梨尔
2026-03-12
业界
类字节码:揭开Java虚拟机运行机制的神秘面纱
0
200
坪钗
2026-03-13
安全
《软件测试策略》——工具与自动化的基本问题(五)
0
644
赖秀竹
2026-03-17
安全
《软件测试策略》——工具与自动化的基本问题(五)
0
739
筒霓暄
2026-03-17
安全
Python Conda的基本认识整理
0
112
凤患更
2026-03-17
业界
调试排错 - 线程Dump分析
0
796
慢秤
2026-03-18
业界
dplyr和tidyr用法
0
847
闰咄阅
2026-03-20
业界
[AI应用框架/Java] Spring AI 应用开发指南
0
10
阮蓄
2026-03-20
回复
(22)
吟氅
2026-1-14 15:36:46
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
歇凛尾
2026-1-17 16:01:29
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
过来提前占个楼
方子楠
2026-1-29 07:37:29
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个有用。
眩疝诺
2026-1-30 11:57:49
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
笃扇
2026-2-1 03:17:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
痨砖
2026-2-2 02:37:37
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,试用一下
遑盲
2026-2-3 04:15:01
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
撷监芝
2026-2-6 09:45:47
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
崔和美
2026-2-7 05:52:04
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
司空娅玲
2026-2-8 02:41:43
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
祝安芙
2026-2-8 11:12:26
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
靳谷雪
2026-2-9 03:52:12
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
纪晴丽
2026-2-11 05:24:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
热心回复!
卢莹洁
2026-2-11 18:36:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
裸历
2026-2-21 11:55:44
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
揉幽递
2026-2-23 23:06:15
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
颓哀
2026-2-24 17:00:10
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
宗和玉
2026-2-26 10:17:59
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
崔竹
2026-2-26 18:12:11
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
系味
2026-2-26 18:12:11
关注
0
粉丝关注
11
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9912
7
宋子
9878
8
荪俗
9016
9
闰咄阅
9995
10
刎唇
9995
查看更多
今日好文热榜
743
"Memory in the Age of AI Agents: A Surve
216
Prompt 焚诀——一个模板,终结你和 AI 的
510
【节点】[SampleTexture3D节点]原理解析与
166
记一次Webshell流量分析 | 添柴不加火
978
旧安卓手机部署openclaw
635
AI编程时代,35岁以上程序员将何去何从?
828
[Refactor]CPP Learn Data Day 1
2
Block Copy 的内存布局详解
616
把 Flask 搬进 ESP32,高中生自研嵌入式 We
7
渐得如意智能自动化办公平台——定义属于你
890
[AI/Agent/社交] AI Agent社交网络产品:Mo
526
C++协程入门
286
TCSSOFTDEPTCOPY.zip Can download source
803
Vue3 + Iframe 实战:打造企业级流程配置中
824
“你用AI,那我也会用AI,我还要你干什么?
623
自感痕迹论:先验意义场域与经验痕迹内外
9
一道KMP统考真题彻底讲透:nextval与滑动距
9
一道KMP统考真题彻底讲透:nextval与滑动距
743
从 Clubhouse 的崛起与陨落,看语聊房 RTC
245
老马失前蹄,竟然在数据库外键上翻车了,重