1 内存不可见性
一个线程读,一个线程写,读线程读的操作太频繁,导致读被优化掉了(优化成直接CPU的寄存器取上次的结果),就会导致另外一个写线程来写数据的时候,就会出现问题。,写的结果读线程感知不到。
1.1 解决方案: volatile关键字
volatile 相当于强行禁止编译器对读操作的优化 ~ 牺牲了性能但是换来了结果的正确性。
作用:保持内存可见性 一种解决特定场景的线程安全问题的方案。
一个线程读,一个线程写,读线程读的操作太频繁,导致读被优化掉了(优化成直接CPU的寄存器取上次的结果),就会导致另外一个写线程来写数据的时候,就会出现问题。,写的结果读线程感知不到。
volatile 相当于强行禁止编译器对读操作的优化 ~ 牺牲了性能但是换来了结果的正确性。
作用:保持内存可见性 一种解决特定场景的线程安全问题的方案。