[Java 多线程] volatile关键字实现的简单读写锁

2017-1-5 14:46:58 oye
Example Code:

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++;
    }
}

Analysis:

  • 使用 volatile 关键字修饰变量,保证获取到的变量值是最新的
  • 对写方法使用 synchronized 同步,保证写入操作时安全的
  • volatilesynchronized 轻量
  • 适用于有大量读操作,较少写操作的情况,例如需要经常检查某一指标、变量的情况(温度监控等)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 今天介绍下volatile关键字,volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java ...
    嘟爷MD阅读 1,312评论 7 27
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,376评论 11 349
  • 希望你永远笑得那么开心 次数多了 便没有感觉了 也是麻木了 呵呵 这样其实自己一个人也是可以的 婚姻是拯救不了自己...
    平米123阅读 309评论 0 0
  • 关于这本本子的历史: 在陈君文具店买的,和甘敏一起。 起初想用它来摘记,这样家里、学校都有一本用来摘记的,后来发现...
    NancyLuo阅读 145评论 0 0
  • 今天吃完午饭跟同事们聊的正开心,突然前台小天使说人事来电话说老板让你过去一趟。“我”老板找我,你又没有搞错,人事说...
    梁木纯阅读 575评论 0 1