当前位置: 首页 > news >正文

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 是线程主动调用方法进入的等待。

http://www.jsqmd.com/news/105288/

相关文章:

  • Scribd电子书下载终极指南:轻松实现PDF永久收藏
  • Java 存储钱取钱作业
  • MySQL终端常用命令
  • SpringBoot集成Spring Statemachine(状态机)实战教程
  • Canal-deployer1.1.8监听mysql数据变化(windows)
  • B站数据分析终极指南:一键掌握UP主内容趋势
  • 揭秘Docker容器间通信难题:智能Agent互联的3种高阶解决方案
  • 如何用3步实现企业Agent的Docker权限最小化?运维必看
  • 程序员面试必备的Java八股文,适合所有的Java求职者!
  • 终极视频修复指南:5步快速拯救损坏的MP4文件
  • 选择排序--自学笔记
  • 金仓数据库:不止于兼容,以智能部署、字段级安全与代码级洞察重塑企业级数据库体验
  • 水质监测“保真”首选:万维盈创户外智能水质采样站
  • 【Q#量子编程效率革命】:揭秘VSCode重构工具的5大核心技巧
  • Open Library 终极指南:三步打造你的专属数字图书馆
  • Utilizing 英文单词学习
  • 揭秘VSCode与量子硬件连接失败原因:90%开发者忽略的3个关键点
  • 选专业、转行为什么推荐学网络安全?看完这篇你就知道了!
  • VSCode日志分析实战(量子算法性能瓶颈的4个信号)
  • 姿态搜索终极指南:5步构建智能人体动作分析系统
  • 异常传递失败?教你如何在Q#中精准捕获Python异常,90%的人都忽略了这一点
  • ModEngine2游戏模组开发:从零开始的5步实战指南
  • NSTool深度解析:Switch文件格式的终极处理指南
  • Meta Llama模型访问权限申请与使用指南
  • 【量子计算开发新纪元】:VSCode模拟器调试的7个关键优势
  • 网安人才缺口480万!3个相关专业特点大不同,一文分清
  • 高效OpenUSD场景导出:USDZ与glTF格式深度对比与转换指南
  • 面试官:缓存淘汰要怎么设计才能保证命中率?
  • 专为极客而生的软件无线电平台 ANTSDR E310 vs Pluto SDR对比测评
  • 建议Java后端面试都准备到这种程度再去...