volatile
2019-02-13 本文已影响0人
指尖架构141319
volatile关键字只能保证能拿到最新的变量,并不能保证线程安全。
一个线程的执行顺序:
1.加载(复制)主存数据到操作栈
2.对操作栈的数据进行修改
3.将数据写回主存中
volatile不是并发安全举例:
两个线程A、B同时修改一个int i=5,A执行i++,B同时执行i++,写回主存后都是6,但是,其实 i 执行了两次++
volatile关键字只能保证能拿到最新的变量,并不能保证线程安全。
一个线程的执行顺序:
1.加载(复制)主存数据到操作栈
2.对操作栈的数据进行修改
3.将数据写回主存中
volatile不是并发安全举例:
两个线程A、B同时修改一个int i=5,A执行i++,B同时执行i++,写回主存后都是6,但是,其实 i 执行了两次++