知识点详细说明
线程安全问题(Thread Safety)是指多线程环境下,因共享资源访问冲突或执行顺序不确定性导致的数据不一致、程序异常等问题。以下是线程安全的核心知识点:
1. 线程安全问题的典型场景
场景 | 示例 |
---|---|
竞态条件(Race Condition) | 多个线程同时修改同一变量(如计数器未同步)。 |
内存可见性问题 | 线程A修改了共享变量,线程B未及时感知到变化(如未使用volatile )。 |
指令重排序 | JVM或CPU优化导致代码执行顺序与预期不符(如单例模式的双重检查锁问题)。 |
2. 线程不安全示例(银行转账问题)
class BankAccount {
private int balance = 1000;
public void transfer(int amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("转账成功,余额: " + balance);
} else {
System.out.println("余额不足");
}
}
}
public class ThreadSafetyDemo {