news 2026/7/7 20:16:03

Java 线程知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 线程知识点

Java线程是Java并发编程的核心,内容非常丰富且重要。这里为你梳理一个系统性的知识图谱和关键点详解,无论是面试还是日常开发都很有用。

---

一、Java线程的创建与管理

1. 创建线程的三种核心方式

· 继承 Thread 类

```java

class MyThread extends Thread {

@Override

public void run() {

// 线程执行体

}

}

// 启动:new MyThread().start();

```

· 缺点:Java是单继承,限制了扩展性。

· 实现 Runnable 接口(最推荐)

```java

class MyRunnable implements Runnable {

@Override

public void run() {

// 线程执行体

}

}

// 启动:new Thread(new MyRunnable()).start();

```

· 优点:任务与线程分离,可以复用 Runnable 对象,更灵活。

· 实现 Callable 接口(带返回值)

```java

class MyCallable implements Callable<String> {

@Override

public String call() throws Exception {

// 线程执行体

return "结果";

}

}

// 配合线程池或FutureTask使用

```

· 与 Runnable 的关键区别:call() 方法有返回值,可以抛出受检异常。

· 通常与 ExecutorService、Future/FutureTask 结合使用。

2. 线程的生命周期(状态)

通过 Thread.getState() 获取,对应 Thread.State 枚举:

1. NEW: 已创建但未启动 (start() 未调用)。

2. RUNNABLE: JVM中正在执行或等待操作系统资源(如CPU)。对应操作系统层面的 Ready 和 Running 状态。

3. BLOCKED: 等待监视器锁(synchronized) 进入同步块/方法。(仅针对synchronized)

4. WAITING: 无限期等待,直到被其他线程显式唤醒。调用以下方法会进入此状态:

· Object.wait() (需先获得锁)

· Thread.join() (等待目标线程终止)

· LockSupport.park()

5. TIMED_WAITING: 带超时时间的等待。如 Thread.sleep(long)、Object.wait(long)、Thread.join(long)。

6. TERMINATED: 线程执行完毕。

重要区别:BLOCKED vs WAITING/TIMED_WAITING

· BLOCKED 是因为锁竞争,是被动的。

· WAITING 是线程主动调用方法进入的等待。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 7:22:23

NSTool深度解析:Switch文件格式的终极处理指南

NSTool深度解析&#xff1a;Switch文件格式的终极处理指南 【免费下载链接】nstool General purpose read/extract tool for Nintendo Switch file formats. 项目地址: https://gitcode.com/gh_mirrors/ns/nstool NSTool作为一款专业的Nintendo Switch文件格式读取和提取…

作者头像 李华
网站建设 2026/7/7 12:58:45

专为极客而生的软件无线电平台 ANTSDR E310 vs Pluto SDR对比测评

ANTSDR E310 vs Pluto SDR对比测评微相ANTSDR E310软件无线电开发板是一款专为高阶研发与专业应用设计的高性能、全开源SDR平台。与常见的入门级设备如Pluto SDR相比&#xff0c;E310在硬件性能、系统灵活性与开发生态方面展现出显著优势&#xff0c;适用于工业预研、通信系统集…

作者头像 李华
网站建设 2026/7/7 4:33:54

SpringBoot集成Spring Statemachine(状态机)实战教程

背景本文将基于借款订单状态流转这个场景来实现。如果使用if-else或者switch语句来处理这些状态&#xff0c;代码会变得非常臃肿且难以维护。而状态机提供了一种更加结构化和可维护的方式来管理这些状态转换。示例中涉及到&#xff1a;状态机的配置、数据持久化、状态恢复查询、…

作者头像 李华
网站建设 2026/7/7 8:23:22

Admin.NET通用权限开发框架:快速构建企业级管理系统的终极指南

在当今快速发展的企业信息化时代&#xff0c;一个高效、稳定且易扩展的后台管理系统对于任何组织都至关重要。Admin.NET作为基于.NET 6/8技术栈的通用权限开发框架&#xff0c;为开发者提供了快速构建企业级管理系统的完整解决方案。无论你是初学者还是资深开发者&#xff0c;这…

作者头像 李华
网站建设 2026/7/7 1:39:29

为什么你的LangGraph Agent跑不满CPU?:深度剖析Docker资源分配盲区

第一章&#xff1a;为什么你的LangGraph Agent跑不满CPU&#xff1f;&#xff1a;深度剖析Docker资源分配盲区在部署LangGraph Agent时&#xff0c;许多开发者发现即使负载增加&#xff0c;CPU利用率依然无法达到预期。这往往并非代码效率问题&#xff0c;而是Docker容器的资源…

作者头像 李华
网站建设 2026/7/7 13:54:06

GEO服务商五强对决:技术架构、平台覆盖与效果保障的全面横评

摘要与排名速览随着DeepSeek、Kimi、ChatGPT、文心一言等AI搜索工具日均请求量突破十亿次&#xff0c;用户获取信息的核心入口正发生结构性迁移。GEO&#xff08;生成式引擎优化&#xff09;应运而生&#xff0c;其目标不再是传统SEO的“网页点击”&#xff0c;而是让品牌内容被…

作者头像 李华