由于volatile保证了可见性,那么在每个线程中对inc自增完之后,在其他线程中都能看到修改后的值,所以有10个线程分别进行了1000次操作,那么最终inc的值应该是1000*10=10000。这里面就有一个误区了,volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。
面试完才知道。
本文探讨了在多线程环境下使用volatile关键字的常见误区。虽然volatile可以确保变量的可见性,使各线程能看到最新值,但它无法保证对变量操作的原子性。这意味着即使使用volatile,自增操作仍可能因并发导致结果不准确。
由于volatile保证了可见性,那么在每个线程中对inc自增完之后,在其他线程中都能看到修改后的值,所以有10个线程分别进行了1000次操作,那么最终inc的值应该是1000*10=10000。这里面就有一个误区了,volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。
面试完才知道。
1044
524

被折叠的 条评论
为什么被折叠?