- 1
- 0
- 约5.02千字
- 约 14页
- 2026-03-09 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年程序员面试宝典:技术难题与答案详解
一、Java基础与进阶(5题,每题10分)
1.题目:
Java中的`volatile`关键字有哪些特性?请结合JMM(Java内存模型)解释其实现线程安全的具体原理。
答案与解析:
`volatile`关键字的主要特性包括:
1.可见性(Visibility):确保一个线程对共享变量的修改能立即被其他线程看到。
2.禁止指令重排序(禁止指令重排序):确保代码执行顺序与程序顺序一致,防止编译器或处理器优化导致数据竞争。
JMM原理解析:
-`volatile`变量会使用`Lock`前缀(如`Lock-Free`的MESI协议)在CPU缓存中加锁,确保每次读/写都会从主内存获取最新值,而非本地缓存。
-写操作会清空本地缓存,读操作会先检查主内存是否被修改,若被修改则立即从主内存加载。
-这与`synchronized`不同,`volatile`不保证原子性,仅保证可见性和禁止重排序。
2.题目:
请解释Java中的`AQS`(AbstractQueuedSynchronizer)如何实现线程池的公平锁与非公平锁?
答案与解析:
`AQS`通过`Node`节点和`CLH锁队列`实现:
-公平锁(FairLock):节点按FIFO顺序入队,每次只有队列头部线程能获取锁,避
原创力文档

文档评论(0)