一、思维导图整体知识结构梳理
本次学习内容分为四大核心模块:多线程基础概念、多线程三种实现方式、线程安全与同步机制、Lock 锁与 Lambda 简化写法,是 Java 并发编程入门核心内容。
(一)多线程基本概念
- 进程:操作系统独立资源分配单位,一个运行中的软件就是一个进程;
- 线程:进程内独立执行路径,是 CPU 调度最小单位,一个进程可包含多条线程;
- 并发 / 并行:并发是 CPU 快速轮换执行多个线程(宏观同时、微观交替);并行是多核 CPU 同时执行多条线程。
(二)多线程三种实现方式
- 继承 Thread 类自定义类继承
Thread,重写run()方法,new 对象.start()启动线程;缺点:Java 单继承,无法再继承其他类,耦合度高。 - 实现 Runnable 接口(推荐)实现
Runnable重写run(),传入 Thread 构造器启动;优点:避免单继承限制、同一个任务可被多个线程共用,资源共享更方便。 - 实现 Callable 接口 + FutureTask支持线程返回值、抛出异常,可通过
get()获取执行结果,适合需要拿到线程执行返回数据的场景。
线程常用 API
start():真正开启线程,由 JVM 调用 run 方法;Thread.currentThread():获取当前执行线程对象;setPriority():设置线程优先级(仅为调度建议,不绝对生效);sleep():让线程休眠指定毫秒,释放 CPU 执行权;getName()/setName():获取 / 设置线程名称。
(三)线程安全问题
- 问题根源:多条线程同时操作共享临界资源,CPU 切换执行导致指令被拆分,出现数据错乱(典型案例:售票超卖、剩余票数负数);
- 解决核心思路:保证共享资源同一时间只允许一条线程执行,即原子性操作,通过加锁实现线程互斥。
(四)线程同步方案
1. synchronized 同步锁(隐式锁)
- 同步代码块:
synchronized(锁对象){ 操作共享资源代码 },锁对象任意唯一对象,粒度更细; - 同步方法:方法上加
synchronized修饰,非静态锁为this 当前对象,静态锁为类字节码对象 Class; 底层自动完成锁获取与释放,出现异常会自动释放锁,不会死锁。
2. Lock 锁(显式锁,java.util.concurrent.locks)
手动创建ReentrantLock可重入锁对象,手动 lock () 加锁、finally 块中 unlock () 释放锁; 优势:灵活性更高、可尝试非阻塞获取锁、公平锁 / 非公平锁可配置,锁粒度控制更精准。
(五)Lambda 表达式简化线程代码
因为Runnable是函数式接口(仅一个抽象方法),可以用 Lambda 一行简化线程创建:
java
运行
new Thread(() -> { // 线程执行任务 }).start();大幅精简匿名内部类冗余代码,也是函数式编程入门实践。
二、思维导图制作与分享意图
1. 个人知识点梳理与易错点规避
线程三种实现方式优缺点、synchronized 锁对象归属(静态 / 非静态)、Lock 手动锁必须在 finally 释放等都是高频易错点。通过思维导图层级拆解,理清线程不安全产生本质、两套锁机制区别,避免售票案例超卖、死锁、锁未释放等编码 bug。
2. 面试与项目实用价值
多线程、并发安全、synchronized 与 Lock 对比是后端面试必考内容,也是实际项目异步任务、定时处理、高并发接口的基础。这份导图完整覆盖线程创建、生命周期、同步加锁方案,可作为并发入门速查手册。
3. 课程体系承接逻辑
前面反射、代理、注解、泛型夯实 JavaSE 底层基础,本日进入并发编程模块,属于 Java 高阶核心能力;后续线程池、volatile、JMM、AQS 等内容都建立在本次线程安全、锁机制之上,为高并发编程、框架底层原理理解铺路。
4. 思维导图结构化优势
多线程概念抽象、锁规则容易混淆,树形结构按照「是什么→怎么创建→有什么问题→怎么解决→代码简化写法」递进拆解,清晰区分两种锁的使用场景与语法差异,复习逻辑直观清晰。
三、当日学习总结
今天系统完成 Java 多线程入门学习:理解进程与线程区别,掌握继承 Thread、实现 Runnable、Callable+FutureTask三种线程创建方式,熟练调用线程常用控制 API;弄懂多线程并发操作共享资源导致线程不安全的底层原因;学会使用synchronized同步代码块 / 同步方法、ReentrantLock显式锁两种方案解决线程安全问题;最后利用 Lambda 表达式简化 Runnable 线程代码,体会函数式接口简化编程的优势。 并发编程是后端开发核心能力,本次掌握线程基础与锁同步机制,正式打开 Java 并发体系学习入口,为后续线程池、锁优化、高并发问题排查打下扎实基础。