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

一、线程创建(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 单线程
相关推荐
折哥的程序人生 · 物流技术专研10 分钟前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe1830 分钟前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
r_oo_ki_e_39 分钟前
Java Map 集合学习笔记
java·笔记·学习
SL-staff1 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
咖啡八杯2 小时前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
爱笑的源码基地2 小时前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
我命由我123453 小时前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
万亿少女的梦1683 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
微信开发api-视频号协议3 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad
犀利豆4 小时前
#AI in Harness(一)
java·ai编程