美文网首页
程序员修炼之道34-共享变量

程序员修炼之道34-共享变量

作者: DZQANN | 来源:发表于2022-02-27 22:53 被阅读0次

共享变量

共享变量是多线程使用中非常容易出错的地方。我们系统中的单例缓存都是共享变量。

在使用过程中有几点规范或者说要注意的地方

1. 尽量少暴露更新方法

如果说一个共享变量只对外暴露了一个update方法,其余都是read方法,那么多线程引入的并发问题则相对比较好控制,用

synchronized关键字就好。如果是多个则需要使用锁了,暴露的越多,多个方法间越容易有并发问题

2. 双重检查锁

这个是阿里巴巴的Java开发手册里面提到的词语,不好解释直接上代码

public class MyCache {
  private Cache cache = null;
  public Cache getCache() {
    if(cache == null) {
      synchronized(this) {
        if(cache == null) { // double check
          cache = new Cache()
        }
      }
    }
  }
}

这里我们的系统中曾经double check那里是没有的,可以想象如果更新一个cache很慢的话,性能会很受影响

3. volatile

这个也是Java开发手册里面提到的,简单看过相关内容,可以解决一写多读,具体的细节还没有看。(如果有大佬懂可以科普一下)

4. SimpleDateFormat

这个是非常著名的SimpleDateFormat。对于这一点我们可以逐渐把系统中的日期使用转换成LocalDateTime系列。之前也发生过SimpleDateFormat引发的并发问题/

相关文章

网友评论

      本文标题:程序员修炼之道34-共享变量

      本文链接:https://www.haomeiwen.com/subject/pxirrrtx.html