码迷,mamicode.com
首页 > 编程语言 > 详细

Java语言中的volatile变量

时间:2015-01-15 01:39:41      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

Java中的两种内置同步机制: synchronized 和 volatile 变量, volatile修饰的变量, 在使用时会强制检查最新值. 有synchronized的值可见性, 但是没有其操作原子性. 因为其轻量的原因, 在一些考虑性能的地方, 可以使用volatile, 但是使用时要非常小心.

常用的场景是: 少写多读, 并且写入口唯一的情况.

http://www.ibm.com/developerworks/java/library/j-jtp06197/index.html

 

Using a volatile variable for multiple publications of independent observations

public class UserManager {
    public volatile String lastUser;

    public boolean authenticate(String user, String password) {
        boolean valid = passwordIsValid(user, password);
        if (valid) {
            User u = new User();
            activeUsers.add(u);
            lastUser = user;
        }
        return valid;
    }
}

 

@ThreadSafe
public class CheesyCounter {
    // Employs the cheap read-write lock trick
    // All mutative operations MUST be done with the ‘this‘ lock held
    @GuardedBy("this") private volatile int value;

    public int getValue() { return value; }

    public synchronized int increment() {
        return value++;
    }
}

 

Java语言中的volatile变量

标签:

原文地址:http://www.cnblogs.com/milton/p/4225346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!