在Java后端开发面试中,并发编程是非常重要的核心知识点。
尤其是在互联网高并发系统中,面试官经常会考察:

  • 线程基础
  • synchronized与锁机制
  • volatile与内存模型
  • CAS与原子类
  • 线程池
  • 并发容器
  • JUC并发工具

本文整理了一份 Java并发面试题100道(含答案解析),帮助Java开发者系统复习并发编程知识。

适合人群:

  • Java后端开发工程师
  • 准备跳槽涨薪的程序员
  • 想深入理解Java并发编程的开发者

Java面试题

如果你想查看更多 Java并发面试题 + AI答案解析

👉 https://myquotego.com/html/questions?_from=csdn_158936062_1


一、Java线程基础面试题(1-20)

1、什么是线程?

线程是程序执行的最小单位,一个进程可以包含多个线程。


2、线程和进程有什么区别?

进程是资源分配的单位,线程是CPU调度的单位。


3、创建线程的几种方式?

常见方式:

  • 继承 Thread 类
  • 实现 Runnable 接口
  • 实现 Callable 接口
  • 线程池

4、Runnable 和 Callable 的区别?

区别:

  • Runnable 没有返回值
  • Callable 可以返回结果并抛异常

5、Thread 的 start() 和 run() 区别?

  • start() 会启动新线程
  • run() 只是普通方法调用

6、什么是线程生命周期?

线程生命周期包括:

  • 新建
  • 就绪
  • 运行
  • 阻塞
  • 终止

7、sleep() 和 wait() 的区别?

区别:

  • sleep 不释放锁
  • wait 释放锁

8、什么是线程安全?

当多个线程访问共享资源时不会出现数据错误。


9、什么是线程上下文切换?

CPU在多个线程之间切换执行。


10、什么是守护线程?

为其他线程服务的线程,例如 GC线程


更多并发面试题:

👉 https://myquotego.com/html/questions?_from=csdn_158936062_2


二、synchronized与锁机制面试题(21-40)

21、什么是 synchronized?

synchronized 是Java中的 内置锁机制


22、synchronized 可以修饰什么?

可以修饰:

  • 方法
  • 代码块

23、synchronized 锁的是什么?

锁的是 对象监视器(Monitor)


24、synchronized 是可重入锁吗?

是的,同一线程可以重复获取锁。


25、什么是锁升级?

锁升级过程:

  • 偏向锁
  • 轻量级锁
  • 重量级锁

26、什么是死锁?

两个线程互相等待对方释放资源。


27、如何避免死锁?

常见方法:

  • 固定加锁顺序
  • 使用超时锁
  • 减少锁嵌套

28、ReentrantLock 和 synchronized 区别?

ReentrantLock 提供:

  • 可中断锁
  • 公平锁
  • 条件变量

29、什么是公平锁?

线程按 等待顺序获取锁


30、什么是非公平锁?

线程可以 插队获取锁


三、volatile与Java内存模型面试题(41-60)

41、什么是 volatile?

volatile 是一种 轻量级同步机制


42、volatile 的作用?

主要作用:

  • 保证可见性
  • 禁止指令重排序

43、volatile 能保证原子性吗?

不能。


44、什么是Java内存模型(JMM)?

JMM定义了 线程之间如何共享变量


45、什么是可见性?

一个线程修改变量后,其他线程可以立即看到。


46、什么是有序性?

程序执行顺序符合代码逻辑。


47、什么是原子性?

操作不可被中断。


48、happens-before 原则是什么?

保证操作执行顺序和可见性。


49、volatile 使用场景?

例如:

  • 状态标志
  • 单例模式

50、什么是双重检查锁?

用于实现 线程安全的单例模式


四、CAS与原子类面试题(61-80)

61、什么是CAS?

CAS(Compare And Swap)是一种 无锁并发机制


62、CAS的三个操作数?

  • 内存地址
  • 期望值
  • 更新值

63、CAS有什么问题?

可能出现 ABA问题


64、什么是ABA问题?

变量被改回原值但CAS无法感知。


65、如何解决ABA问题?

可以使用:

  • AtomicStampedReference

66、什么是原子类?

Java提供的线程安全类,例如:

  • AtomicInteger
  • AtomicLong

67、AtomicInteger 原理?

基于 CAS实现


68、LongAdder 为什么性能更高?

减少线程竞争。


69、什么是自旋锁?

线程不断尝试获取锁。


70、什么是无锁编程?

通过CAS实现并发控制。


五、线程池与并发工具面试题(81-100)

81、什么是线程池?

线程池用于 管理线程资源


82、线程池核心参数?

主要包括:

  • corePoolSize
  • maximumPoolSize
  • workQueue

83、线程池执行流程?

  1. 创建核心线程
  2. 加入任务队列
  3. 创建最大线程

84、常见线程池类型?

  • FixedThreadPool
  • CachedThreadPool
  • SingleThreadExecutor

85、为什么不建议使用 Executors?

可能导致 OOM


86、什么是阻塞队列?

线程安全队列。


87、常见阻塞队列?

例如:

  • ArrayBlockingQueue
  • LinkedBlockingQueue

88、什么是CountDownLatch?

用于 线程等待


89、什么是CyclicBarrier?

用于 线程同步屏障


90、什么是Semaphore?

用于 控制并发数量


91、什么是Future?

表示 异步任务结果


92、什么是CompletableFuture?

增强版Future。


93、ForkJoinPool是什么?

用于 分治任务并行执行


94、什么是工作窃取算法?

空闲线程从其他线程队列获取任务。


95、什么是并发容器?

线程安全集合,例如:

  • ConcurrentHashMap

96、ConcurrentHashMap 原理?

分段锁(JDK7)或CAS(JDK8)。


97、CopyOnWriteArrayList 原理?

写时复制。


98、什么是阻塞算法?

线程等待资源。


99、什么是非阻塞算法?

线程不会被阻塞。


100、Java并发编程核心思想?

通过 锁、CAS、线程池和并发工具 实现高并发系统。


更多Java面试题整理

JVM面试题
MySQL面试题
Redis面试题
Spring面试题

完整面试题库:

https://myquotego.com/html/questions?_from=csdn_158936062_3

支持:

  • AI模拟面试
  • AI答案解析
  • 2000+面试题
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐