创建线程方式必背极简关键字1. 继承 Thread2. 实现 Runnable3.CallableFutureTask有返回值4. 线程池企业主流考场一句话速答四种方式继承 Thread 类、实现 Runnable 接口、Callable 搭配 FutureTask 支持返回值项目里优先用线程池创建管理线程。记忆小窍门线程的状态必背极简关键字新建 NEW可运行 RUNNABLE同步阻塞 BLOCKED无限等待 WAITING限时等待 TIMED_WAITING终止 TERMINATED 区分synchronized 阻塞 BLOCKEDsleep/wait 等待sleep 不释放锁wait 释放锁考场一句话速答线程六大状态新建、可运行、同步阻塞、无限等待、限时等待、终止。synchronized 锁失败进入阻塞sleep、wait 等进入等待执行完毕进入终止。记忆小窍门新NEW跑RUNNABLE堵BLOCKED等WAITING/TIMED_WAITING死TERMINATED 锁抢不到 堵主动睡觉 等带时间 限时等不带 无限等。线程池拒绝策略必背极简关键字Abort 抛异常默认CallerRuns 交给调用线程执行Discard 丢掉新任务DiscardOldest 丢弃队列最老任务考场一句话速答线程池四种拒绝策略默认抛异常调用者线程执行丢弃新任务丢弃队列里最旧任务业务可自定义策略。记忆小窍门Abort abort 终止抛错Caller 调用者干活Discard 扔新来的DiscardOldest 扔老旧的保新任务。为什么不建议executors创建线程池线程安全的方案必背极简关键字Executors 隐患无界队列 / 线程无上限高并发 OOM推荐手写 ThreadPoolExecutor限定队列、最大线程。考场一句话速答Executors 容易出现无界队列或无限创建线程并发量大造成内存溢出规范要求手动创建 ThreadPoolExecutor限制队列长度和最大线程数。记忆小窍门Executors 图省事没限制任务 / 线程无限涨爆内存手写线程池卡死上限可控不雪崩。什么是threadlocal怎么实现的应用场景内存泄漏问题怎么解决必背极简关键字线程私有隔离数据存在线程的 ThreadLocalMapkey 弱引用、value 强引用线程池复用易内存泄露用完必须 remove。考场一句话速答ThreadLocal 实现线程私有变量隔离数据存在线程自身的 ThreadLocalMap因 value 强引用在线程池场景易内存泄漏规范用完调用 remove 清理。记忆小窍门数据在线程身上不在 ThreadLocalkey 弱能自动回收value 强不行线程不死垃圾清不掉手动 remove 兜底。synchronized是怎么实现的锁的是什么如何保证原子性可见性有序性锁升级必背极简关键字底层monitor 指令 / ACC_SYNCHRONIZED基于对象头 Mark Word 锁对象实例锁锁 this静态锁锁 Class 三大特性独占保原子、主存刷新保可见、禁止重排保有序 锁升级偏向→轻量级→重量级只升不降偏向无 CAS轻量级自旋 CAS重量级内核阻塞。考场一句话速答synchronized 基于对象头和 Monitor 实现实例锁锁对象、静态锁锁 Class独占保证原子内存刷新保证可见禁止重排保证有序JDK1.6 引入锁升级偏向锁、轻量级锁、重量级锁单向升级不可降级。记忆小窍门锁绑对象不绑代码 原子 独一份执行可见 强制刷主存有序 不许乱排 没人抢偏向轮流抢轻量自旋疯狂抢变重量级。synchronizedreentrantlock*区别必背极简关键字synchronizedJVM 关键字、自动解锁、非公平、不可中断、无多条件 ReentrantLockAQS 实现、手动 lock/unlock、可选公平 / 非公平、支持限时 tryLock、可中断、多 Condition二者都可重入。考场一句话速答synchronized 是 JVM 原生关键字自动释放锁只支持非公平锁功能简单ReentrantLock 基于 AQS 手动管控锁支持公平锁、限时尝试、可中断、多条件唤醒功能更灵活二者都支持锁重入。记忆小窍门synchronized 省心不用手动开锁关锁功能固定ReentrantLock 手动管控功能丰富自由度高竞争不大两者性能差不多。volatile是什么保证什么性为什么不能保证原子性必背极简关键字volatile轻量级保可见性、禁重排不保原子性复合操作i并发出错无排他锁。考场一句话速答volatile 修饰变量保证多线程可见性禁止指令重排序但没有互斥能力无法屏蔽多线程并发穿插因此不能保证 i 这类复合操作的原子性。记忆小窍门看得见可见、不乱跑禁止重排拦不住多线程一起动手加减拆分步骤一定会出错简单读写没问题运算不行。cas是什么有什么问题必背极简关键字CAS比较交换、乐观锁、CPU 原语三大缺陷ABA、自旋耗 CPU、仅支持单个变量。考场一句话速答CAS 是乐观无锁对比预期值和内存值一致才更新存在 ABA、自旋浪费 CPU、无法操作多变量三个缺点。记忆小窍门先对比再修改ABA 是兜兜转转变回原样一直重试吃 CPU只管一个变量多变量不行。如何理解AQS必背极简关键字AQSJUC 锁底层骨架state 记录锁状态CLH 双向队列存等待线程独占 / 共享双模式模板方法子类重写抢锁规则。考场一句话速答AQS 是并发锁底层通用框架依靠 state 标识锁状态、双向队列存放等待线程分独占和共享模式AQS 封装排队唤醒通用逻辑子类只需要实现尝试获取 / 释放锁的规则。记忆小窍门state 管锁队列管人抢不到去排队释放唤队首框架做通用流程子类定制上锁规则。什么是公平锁和非公平锁必背极简关键字公平按排队顺序先到先得无饥饿吞吐低 非公平允许新线程插队效率高吞吐高可能饥饿 synchronized 固定非公平ReentrantLock 可选。考场一句话速答公平锁严格按请求顺序排队拿锁不会插队非公平锁允许新来线程直接争抢效率更高但可能线程饥饿synchronized 是非公平ReentrantLock 两种都支持。记忆小窍门公平 守规矩排队非公平 能抢就抢不讲顺序追求稳定无饥饿选公平追求性能选非公平。