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

并发编程-1

1. 本讲目标(讲义提炼)

  • 理解线程安全问题的根因。
  • 理解线程生命周期和状态流转。
  • 掌握并发三大特性:原子性、可见性、有序性。
  • 掌握JMMhappens-before规则。
  • 建立synchronizedvolatileCASAQS的知识地图。

2. 面试优先级(按当前国内 Java 面试高频重排)

S 级(必问)

  • JMM是什么?主内存/工作内存关系是什么?
  • 可见性为什么会出问题?volatile如何保证可见性?
  • 有序性为什么会被破坏?什么是指令重排和as-if-serial
  • happens-before常见规则(程序顺序、锁、volatile、传递性)。
  • synchronizedReentrantLock区别。
  • 线程池核心参数、拒绝策略、参数怎么根据场景估算。

A 级(高概率追问)

  • 线程六状态与状态转换(NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WAITING/TERMINATED)。
  • waitsleep区别(是否释放锁、归属类、使用场景)。
  • CAS原理与ABA问题。
  • AQS的核心:state+ CLH 变体队列 + 获取/释放同步状态。
  • ConcurrentHashMap1.7 vs 1.8。

B 级(场景题常用)

  • 高并发接口优化:同步改异步、线程池隔离、压测验证。
  • 多线程和事务配合时的一致性风险(部分成功、回滚边界)。
  • 分布式锁边界问题(误删、续期、可重入、公平性)。

3. 核心知识(按讲义)

3.1 并发基础概念

  • 并发:同一时间段内多个任务都在推进,不一定同一时刻同时执行。
  • 并行:同一时刻多个任务同时执行(通常需要多核)。
  • 线程与进程:
  • 进程是资源分配基本单位,线程是调度执行基本单位。
  • 线程共享进程的堆和方法区,线程私有栈和程序计数器。
  • 上下文切换:
  • 线程切换时保存/恢复寄存器、程序计数器等上下文信息。
  • 切换频繁会带来性能损耗。

3.2 线程生命周期

  • 六种状态:
  • NEW
  • RUNNABLE
  • BLOCKED
  • WAITING
  • TIMED_WAITING
  • TERMINATED
  • 常见状态切换触发:
  • start()NEW -> RUNNABLE
  • 获取锁失败:进入BLOCKED
  • wait()/join():进入WAITING
  • sleep()/wait(timeout)/join(timeout):进入TIMED_WAITING
  • 执行完成或异常退出:TERMINATED

3.3waitvssleep

  • wait()属于Object,必须在同步块/同步方法中调用,调用后释放锁。
  • sleep()属于Thread,可在任意位置调用,不释放已持有的锁。
  • wait()常用于线程通信;sleep()常用于暂停执行。

3.4 线程安全问题根因

  • 根因:多个线程共享变量,且至少有一个线程在写。
  • 只读共享通常线程安全;读写并发通常线程不安全。

3.5 并发三大特性

  • 原子性:操作不可被中途打断。
  • 可见性:一个线程对共享变量的修改,其他线程能及时看到。
  • 有序性:程序执行顺序符合约束(但可能发生重排)。

3.6 指令重排与as-if-serial

  • 编译器和处理器会为性能做重排序。
  • 单线程中遵循as-if-serial:不改变单线程程序最终结果。
  • 多线程下,重排可能破坏预期,导致可见性/有序性问题。

3.7JMM(Java 内存模型)

  • JMM是并发读写共享变量的规范(JSR-133)。
  • 共享变量存主内存;线程操作的是工作内存中的副本。
  • 线程间不能直接读对方工作内存,必须通过主内存传递。
  • JMM屏蔽不同硬件和 OS 的差异,统一并发语义。

3.8happens-before(必须会背)

  • 程序顺序规则:同一线程内,前操作先行发生于后操作。
  • 锁规则:解锁先行发生于后续对同一锁的加锁。
  • volatile规则:对volatile变量的写先行发生于后续读。
  • 传递性:A hb B,B hb C,则 A hb C。

4. 面试速答模板(可直接背)

4.1 什么是JMM

  • JMM是 Java 对多线程共享变量读写行为的规范,定义了主内存和工作内存的交互规则,目标是保证并发下的可见性、有序性和(部分)原子性,并通过happens-before约束编译器和 CPU 重排。

4.2volatile能保证什么?不能保证什么?

  • 能保证:可见性、有序性(禁止特定重排)。
  • 不能保证:复合操作原子性(例如i++)。

4.3synchronizedReentrantLock怎么选?

  • 先用synchronized,语义简单,JVM 原生优化成熟。
  • 需要可中断、可超时、公平锁、多条件队列时用ReentrantLock

4.4 线程池参数怎么定?

  • 先区分 CPU 密集 vs IO 密集。
  • CPU 密集:线程数通常NcpuNcpu+1
  • IO 密集:线程数通常大于Ncpu,按压测和 RT/QPS 迭代调优。
  • 必答补充:避免默认Executors,建议显式ThreadPoolExecutor参数。

5. 高频易错点

  • volatile保证原子性:错误。
  • 把并发和并行混为一谈:错误。
  • 只背线程状态,不会画状态流转:面试容易挂。
  • 线程池只会背 7 参数,不会结合业务给估算逻辑:容易被追问击穿。
  • 只说概念,不说场景(例如“为什么你项目里要上异步和线程池”):得分低。

6. 结合当前面试趋势的补充重点

  • 并发题通常不会孤立问,常和项目优化/稳定性一起问:
  • 例如:接口超时如何改造(同步改异步、线程池隔离、限流降级、压测对比)。
  • AQS常和CountDownLatchReentrantLock、公平/非公平锁联动提问。
  • Redis/分布式锁常与并发一致性一起问(误删、续期、可重入、超时)。

7. 面试前 30 分钟速查清单

  • 我能否在 1 分钟内讲清JMM
  • 我能否准确说出volatile的能力边界?
  • 我能否画出线程 6 状态转换?
  • 我能否解释wait/sleep的 3 个核心差异?
  • 我能否给出一个线程池参数设计案例?
  • 我能否把并发问题和自己项目中的一次优化串起来讲?

8. 资料来源(用于“当前面试重点”参考)

  • 牛客:2025-10 社招 Java 后端面经(线程池、AQS、锁等高频)
    https://www.nowcoder.com/feed/main/detail/46c0aba953de44628a7ebba0a8876577
  • 牛客:2025-06 腾讯云智一面(异步+线程池、CountDownLatch、AQS、并发一致性)
    https://www.nowcoder.com/feed/main/detail/b6203bc1126043b9b8b8f1e65668c4fe
  • 牛客:2025-04 Java 面经复盘(线程状态、wait/sleep、线程池、Synchronized、AQS、CAS)
    https://www.nowcoder.com/discuss/737270649135120384
  • 牛客:2025 高频 200 题汇总(并发专题含 JMM、volatile、AQS、线程池)
    https://www.nowcoder.com/discuss/735091349921206272
http://www.jsqmd.com/news/419714/

相关文章:

  • 解决 Fish Speech 在 PyTorch 2.10.0+cu130 中的 torchaudio.list_audio_backends AttributeError
  • 2026年卫生纸加工设备公司权威推荐:3000型卫生纸加工设备、一套卫生纸加工设备、全自动卫生纸加工设备选择指南 - 优质品牌商家
  • 2026年评价高的水玻璃厂家推荐公司推荐:硅酸钠生产厂家/四川硅酸钠/大型硅酸钠厂家/批发水玻璃/选择指南 - 优质品牌商家
  • 2026年水玻璃厂家厂家最新推荐:硅溶胶厂家哪家实力大/硅溶胶厂家哪家实力强/硅溶胶厂家推荐电话/选择指南 - 优质品牌商家
  • 2026年初湖南废铁回收服务商综合实力与选购指南 - 2026年企业推荐榜
  • 2026年水玻璃厂家厂家权威推荐榜:水玻璃联系方式、水玻璃采购、泡花碱硅酸钠厂家电话、硅酸钠厂家直销选择指南 - 优质品牌商家
  • 2026年宜昌市精品二手车买卖企业综合实力盘点 - 2026年企业推荐榜
  • 2026年市政环卫厂家权威推荐榜:四川环卫资质公司/小区环卫/环卫工程/环卫资质公司/环卫资质哪家好/选择指南 - 优质品牌商家
  • 2026年打印机公司权威推荐:印刷包装打印机/印刷包装打样机/图文数码打印机/小批量包装打印机/烫金增效打印机/选择指南 - 优质品牌商家
  • 2026年乐山特色小吃公司权威推荐:乐山美食夜宵推荐/乐山美食必吃榜/乐山美食攻略/乐山美食旅游攻略/选择指南 - 优质品牌商家
  • 2026年2月湖南全屋定制装修品牌权威评测与选型指南 - 2026年企业推荐榜
  • 2026年乐山特色小吃店公司权威推荐:附近乐山小吃店、附近乐山美食推荐、乐山哪里的小吃好吃、乐山夜宵小吃选择指南 - 优质品牌商家
  • 2026年小区环卫厂家权威推荐榜:云南环卫公司、四川环卫公司、四川环卫资质公司、环卫工程、环卫资质公司选择指南 - 优质品牌商家
  • 2026年优质过碳酸钠供应商综合评估与推荐 - 2026年企业推荐榜
  • 2026年评价高的水玻璃生产厂公司推荐:水玻璃联系方式、水玻璃采购、泡花碱硅酸钠厂家电话、硅酸钠厂家直销选择指南 - 优质品牌商家
  • 2026年湖南地区电线电缆高价回收服务商选择全指南 - 2026年企业推荐榜
  • 2026年油浸式无局放试验变压器厂家综合评测与推荐 - 2026年企业推荐榜
  • 2026年武汉奢侈品回收平台深度评测与避坑指南 - 2026年企业推荐榜
  • 软件神器 --- youtube音频转文字
  • 2026年三峡大坝旅行社选择指南:深度剖析与战略推荐 - 2026年企业推荐榜
  • 2026年聚丙烯腈纤维行业五强服务商深度解析 - 2026年企业推荐榜
  • 2026年,如何甄选国内专业的合同翻译服务团队? - 2026年企业推荐榜
  • 2026年初采购必看:国内实力烧碱服务商电话与选择指南 - 2026年企业推荐榜
  • 2026年初金属锥体厂家盘点:5家优质供应商深度解析 - 2026年企业推荐榜
  • 2026年Q1彩超探头维修顶尖服务商前瞻性选型指南 - 2026年企业推荐榜
  • Redis客户端API的深度解构:超越基础命令的艺术与工程实践
  • opencode接入阿里百练平台
  • 2026年初至今,阳台防水补漏师傅评价盘点与推荐 - 2026年企业推荐榜
  • 2026年武汉纸碗定制厂家选购指南:趋势、排名与案例解析 - 2026年企业推荐榜
  • 2026流动检修车优质推荐榜:移动检修车、福田领航m5检修车、重庆五十铃检修车、一汽解放检修车、东风途逸检修车选择指南 - 优质品牌商家