Java面试时,线程为什么不安全?

张开发
2026/5/31 9:19:30 15 分钟阅读
Java面试时,线程为什么不安全?
作为一名资深程序员以小编个人经验来看在Java面试中锁与并发编程是面试者的重灾区。不论是底层 synchronized 的原理还是上层 JUC 包的使用都是面试官喜欢重点深挖的领域。线程为什么不安全举个线程不安全的例子讲解它的原理。答线程修改变量时会将变量拷贝到本地内存修改完成后再写回主内存。这个过程中如果多个线程同时访问并修改同一个数据就会出现线程安全问题。举个例子主内存中的值为 0线程 A 和线程 B 同时将这个值拷贝到本地内存。线程 A 对其 1线程 B 对其 -1。然后线程 A 将 1 写回主内存线程 B 再将 -1 写回主内存。这时就出现了问题。对一个数据 1 -1 之后得到的结果竟不是 0而是 -1。类似地如果 B 线程先将 -1 写回主内存A 线程再将 1 写回主内存。这时就可能得出错误结果 1。但大多数情况下不会出问题只要一个线程操作完之后第二个线程再进行操作。就能得出正确的结果 0。

更多文章