深入解析 Java 多线程编程中的 Thread 类核心功能

Java 平台的多线程编程能力主要依赖于 Thread 这个基础类。我们将全面剖析该类的重要特性与实用方法,并通过具体案例演示其应用场景。


一、线程的初始化与基础控制

在 Java 中,开发者可以通过以下两种主要途径创建新线程:
1. #### 扩展 Thread 基类

class CustomThread extends Thread {
public void run() {
System.out.println("自定义线程执行中");
}
}
CustomThread worker = new CustomThread();
worker.start(); // 激活线程,自动执行 run()
  1. 采用 Runnable 接口(更灵活,建议优先使用)

Runnable job = () -> System.out.println("任务线程运行中");
Thread worker = new Thread(job);
worker.start();

简化写法

Thread worker = new Thread(()-> {
System.out.println("精简语法创建线程");
})

本部分重点探讨 Thread 类的核心操作方法。


二、线程终止机制:isInterrupted() 与 interrupt()

  • interrupt():向目标线程发送终止请求信号。
  • isInterrupted():检测线程是否收到中断指令。

实例演示

Thread worker = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("持续执行任务...");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println("接收到中断指令!");
break;
}
}
System.out.println("线程正常终止");
});
worker.start();
Thread.sleep(1500);
worker.interrupt(); // 发送中断请求

注意:interrupt() 仅发送请求,实际终止操作需要线程自身逻辑配合(如检查中断状态或处理中断异常)。

执行流程

持续执行任务...
持续执行任务...
持续执行任务...
接收到中断指令!
线程正常终止
进程已完成,返回代码 0

过程解析

1. 持续执行任务...
  • 工作线程启动,进入循环逻辑。
  • 输出信息后执行 Thread.sleep(500) 暂停。
2. 循环执行
  • 由于主线程等待 1500 毫秒,工作线程约执行 3 次循环。
3. 接收到中断指令!
  • 主线程调用 interrupt() 时,工作线程处于休眠状态。
  • sleep() 方法响应中断抛出异常。
  • 捕获异常后输出提示并退出循环。
4. 线程正常终止
  • 循环终止后执行收尾操作。
    关键说明:
    线程间的中断机制本质上是协作式的,需要被中断线程的配合才能实现安全终止。

三、线程同步等待:join() 方法

当线程 A 需要等待线程 B 完成时,可调用 join() 实现同步。

Thread worker = new Thread(() -> {
System.out.println("工作线程启动");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("工作线程完成");
});
worker.start();
worker.join(); // 当前线程暂停等待

四、获取当前线程引用:currentThread()

方法原型

@IntrinsicCandidate
public static native Thread currentThread();

此静态方法可随时获取当前执行线程的对象引用。

应用示例

Thread current = Thread.currentThread();
System.out.println("当前执行线程: " + current.getName());

输出结果

当前执行线程: main

五、线程暂停执行:sleep(long millis)

public static void sleep(long millis)

使用示例

System.out.println("开始暂停");
Thread.sleep(1000); // 线程暂停1秒
System.out.println("暂停结束");

sleep() 使当前线程暂时放弃 CPU 资源,进入休眠状态。

典型应用

  • 控制执行节奏
  • 模拟处理延迟
  • 等待条件成熟

六、线程生命周期状态(Thread.State)

Java 规范定义了六种线程状态:
状态| 说明
---|---
NEW| 已创建但未启动
RUNNABLE| 可运行状态(包含运行中和就绪)
BLOCKED| 等待获取同步锁
WAITING| 无期限等待(如 wait() 或 join())
TIMED_WAITING| 有时限等待(如 sleep() 或带超时的 join())
TERMINATED| 线程执行结束

线程终止后对象依然存在,但不再具备执行能力。

状态转换示意图

状态图


七、核心功能总结

功能 实现方式
线程创建 继承或接口实现
线程启动 start()
线程终止 中断机制配合
线程同步 join()
获取当前线程 currentThread()
执行暂停 sleep()

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/9350.html

赞 (0)
LomuLomu
上一篇 2025 年 5 月 13 日
下一篇 2025 年 5 月 13 日

相关推荐

  • PostgreSQL 的特点

    title: PostgreSQL 的特点date: 2024/12/24updated: 2024/12/24author: cmdragon excerpt:PostgreSQL 是当今最流行的开源关系型数据库之一,凭借其优秀的性能、稳定性和丰富的功能集在用户群中享有极高声誉。相比于其他关系型数据库管理系统,PostgreSQL 拥有许多独特的特点,使其…

    2024 年 12 月 30 日
    68600
  • 程序员ChatGPT Plus代充教程,自己账号开通

    程序员对 ChatGPT Plus 充值这件事应该不算陌生:之前订阅过一段时间 Plus,后来因为各种原因停掉了,现在又想重新开通,但不确定这次的流程和当时是不是完全一样,怕中间漏掉哪个步骤。遇到这种情况,其实不用死磕官网付款,用卡密走一遍自助充值流程,很快就能把问题解决。

    未分类 2026 年 8 月 19 日
    9100
  • Claude充值教程:国内支付完整步骤

    Claude充值教程:国内支付完整步骤,介绍国内支付完整步骤涉及的国内支付、本人账号确认、完整充值步骤和开通后使用方法。

    未分类 2026 年 9 月 5 日
    8500
  • Claude Pro代充订单怎么验收

    Claude Pro代充订单怎么验收,围绕国内支付、代充开通、续费到账和账号验收整理。

    未分类 2026 年 5 月 29 日
    21100
  • ChatGPT Plus无需国外信用卡代充教程

    很多人已经有 ChatGPT 账号,但到了开通 Plus 时才发现,真正麻烦的不是登录,而是付款方式。国内用户如果没有海外信用卡,官方订阅页面往往不太好处理;再去研究虚拟卡、礼品卡或共享账号,又会多出不少额外步骤。ChatGPT Plus无需国外信用卡代充教程 这类需求,本质上就是想把会员开到自己的原账号里,同时用国内更熟悉的支付方式完成。

    未分类 2026 年 6 月 29 日
    21500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信