2026年程序员面试常见问题解答.docxVIP

  • 1
  • 0
  • 约7.37千字
  • 约 23页
  • 2026-05-31 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年程序员面试常见问题解答

一、编程语言基础(共5题,每题10分)

1.题目:

请解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。

答案:

`volatile`关键字在Java中用于确保变量的可见性和禁止指令重排序,但不保证原子性。具体作用如下:

1.可见性:当一个线程修改了volatile变量的值,其他线程能够立即看到这个修改,因为volatile变量会强制刷新缓存。

2.禁止指令重排序:编译器和处理器不会对volatile变量前的操作与volatile变量后的操作进行重排序。

与`synchronized`的区别:

-性能:`volatile`比`synchronized`轻量级,因为它只影响单个变量,而`synchronized`会锁定整个对象。

-原子性:`volatile`只能保证单个读/写操作的原子性,而`synchronized`可以保证复合操作的原子性(如加锁后的一连串操作)。

-适用场景:`volatile`适用于读多写少的场景,而`synchronized`适用于写多或需要复杂同步控制的场景。

解析:

Java内存模型(JMM)中,`volatile`通过内存屏障(MemoryBarrier)实现可见性和禁止重排序,而`synchronized`通

文档评论(0)

1亿VIP精品文档

相关文档