volatile变量与非volatile变量的区别在于,volatile变量每次读都需要去主内存读取最新的值,每次写也需要写回到主内存;非volatile变量允许在缓存中读写以加快计算速度。显然,使用volatile的好处是不必担心在多线程的环境下,不同线程之间共享某些数据的时候出现数据更新不及时。注意,这里只是说对于volatile变量,每个线程在读写的时候的操作对象是主内存(而非各种缓存设备中该变量的拷贝),而不是简单使用volatile就能够保证绝对的线程安全。
显然,使用volatile变量比使用非volatile变量成本更高,无法利用各种缓存设备实现计算加速。那么,在Android设备的环境下,volatile变量的读写性能比之非volatile变量,究竟有多大的区别呢?用一段代码来测试一下:
private static int AA = 10;
private static volatile int BB = 10;
// 测试读:
private void test37() {
new Thread() {
public void run() {