线程创建、生命周期、线程池

一、线程创建(4 种方式,核心记前 2 种)

1. 继承 Thread 类

java 复制代码
class MyThread extends Thread {
    public void run() { ... }
}
new MyThread().start();

2. 实现 Runnable 接口(最常用)

java 复制代码
new Thread(() -> { ... }).start();

3. 实现 Callable 接口(带返回值)

配合 FutureTask 使用。

4. 线程池创建(企业标准用法)

通过 ExecutorService 创建,最推荐。


二、线程生命周期(6 个状态,必背)

1. NEW(新建)

创建了线程对象,但还没调用 start()。

2. RUNNABLE(可运行)

调用了 start(),正在等待CPU 或 正在运行。

3. BLOCKED(阻塞)

等待锁,进不去同步代码块。

4. WAITING(无限等待)

调用 wait()、join()、park(),需要别人唤醒。

5. TIMED_WAITING(限时等待)

sleep(1000)、wait(1000),时间到自动醒。

6. TERMINATED(终止)

run 方法执行完毕 / 异常退出。


三、线程池(重点!企业开发 100% 用)

1. 为什么要用线程池?

  • 避免频繁创建销毁线程,提升性能
  • 控制并发数量,防止OOM
  • 统一管理线程

2. 线程池 7 大参数(面试必考)

  1. corePoolSize:核心线程数
  2. maximumPoolSize:最大线程数
  3. keepAliveTime:非核心线程空闲存活时间
  4. unit:时间单位
  5. workQueue:阻塞队列
  6. threadFactory:线程工厂
  7. handler:拒绝策略

3. 线程池执行流程(一句话记)

任务来了 → 核心线程满了 → 进队列 → 队列满了 → 开非核心线程 → 达到最大线程 → 拒绝策略。

4. 4 种拒绝策略

  1. AbortPolicy:抛异常(默认)
  2. CallerRunsPolicy:返回给调用者执行
  3. DiscardPolicy:直接丢掉
  4. DiscardOldestPolicy:丢掉最老任务

5. 常用线程池(Executors)

  • newFixedThreadPool 固定线程
  • newCachedThreadPool 缓存线程
  • newScheduledThreadPool 定时任务
  • newSingleThreadExecutor 单线程
相关推荐
金銀銅鐵2 小时前
带您看懂字节码指令(一):一帧里有什么
java·后端·ai编程
nice_lcj5204 小时前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
学长毕设5 小时前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
聪明的笨猪猪6 小时前
Java 工程案例:AI 生成 @Async 异步线程池踩坑
java·经验分享·面试·ai编程
学长毕设6 小时前
基于SpringBoot公务员考试交流平台-附源码
java·spring boot·后端
SL_staff9 小时前
私有化低代码:面向强监管行业的可控数字化实践
java·低代码
三翼鸟数字化技术团队9 小时前
高性能存储引擎RocksDB:原理与Java生态实践
java
SL_staff10 小时前
JVS-APS有限产能建模的七个刚性支点:面向产线真实约束的技术实现解析
java·开源·全栈
特立独行的猫A10 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
学长毕设10 小时前
基于SpringBoot的高校后勤报修管理系统-附源码
java·spring boot·后端