美文网首页
final变量——保证线程安全读取域的第三种方法

final变量——保证线程安全读取域的第三种方法

作者: 魂之挽歌w | 来源:发表于2019-09-28 22:46 被阅读0次

      我们都知道,除非使用锁或者volatile,否则无法从多个线程安全地读取一个域。
    但是实际上还有一种情况可以安全地访问一个共享域,即将这个域声明为final时。考虑以下声明:

    final Map<String ,String> accounts = new HashMap<>();
    

    如果不使用final,就不能accounts的可见性,即其他线程看到的很有可能不是accounts更新后的值,比如有可能只是null,而不是构造完成的HashMap。
    当然,使用final并不能保证对Map映射表操作的安全性,如果多个线程读写映射表,仍然是需要同步的。

    相关文章

      网友评论

          本文标题:final变量——保证线程安全读取域的第三种方法

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