深入解析 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 日

相关推荐

  • (Java)jdk8下载安装与环境变量配置(手把手教程)

    目录 一.jdk8的下载 1.点击我的阿里云盘链接进行下载jdk8u231 2.官网下载jdk8(比较繁琐,可以直接去我的云盘下载) 以下为官网下载方式: (1.)第一步:点击下载链接,点击以后会来到这个页面 (2).第二步:往下滑,找到如图所示的jdk8 (3.)第三步:点击Java SE 8 (8u211 and later),来到这个页面直接下 滑 (…

    2025 年 1 月 21 日
    79800
  • 【2024最新版】Java JDK安装配置全攻略:图文详解

    目录 1. 引言 2. 准备工作 2.1 确定操作系统 2.2 检查系统要求 2.3 下载JDK安装包 3. 安装步骤(以Windows系统为例) 4. 配置环境变量 4.1 jdk配置验证 4.2 配置JAVA_HOME环境变量 4.3 配置Path环境变量 4.4 验证jdk是否配置成功 5. 结语 1. 引言 随着技术的不断发展和更新,Java作为世界…

    2024 年 12 月 28 日
    51100
  • 架构-初识BFF

    引言 在最近的一次公司技术分享会上,我们深入探讨了公司的项目架构。核心议题是BFF架构,这是一种在微服务架构之上增加的额外层级。此外,我们还讨论了DDD(领域驱动设计)理念,它在订单、用户等业务中台中扮演着关键角色。 这是我对架构领域的初步探索,虽然理解尚浅,但我还是尝试着将所学内容进行了整理。 BFF 定义 BFF,即Backend For Fronten…

    2024 年 12 月 26 日
    65900
  • 手动部署前后端分离的项目到本地

    1.准备工作 使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar 打包vue项目 npm install -g @vue/cli安装Vue CLI 在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹 将打包好的文件通过远程仓库中转至docker虚拟机 在虚拟机…

    2025 年 1 月 11 日
    43300
  • 【手写 RPC】使用netty手写一个RPC框架 结合新特性 虚拟线程

    【手写RPC框架】如何使用netty手写一个RPC框架 结合新特性 虚拟线程 什么是RPC框架 RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC框架是一种远程调用的框架,它可以让你像调用本地方法一样调用远程方法。 避免了开发人员自己去封装网络请求、连接管理、序列…

    2025 年 1 月 13 日
    55800

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信