美文网首页
Java并发中final的应用总结

Java并发中final的应用总结

作者: ZackJiang | 来源:发表于2018-10-30 00:00 被阅读0次
    1. 写final域重排序规则:final域的写禁止排序到构造函数之外,JVM会在构造函数return之前,final域初始化之后插入storestore屏障,而非final域的写入有可能被JVM重排序到构造函数之外。
      以上规则可以保证:在对象的引用被任意线程可见之前,对象的final域已经被正确初始化过了,而非final域不具备这个保障。
    2. 读final域重排序规则:JVM禁止将初次读一个对象的final域的值重排序到初次获得该对象的引用之前,保证先获得该对象引用,才能读取final域的值,两者之间会插入loadload屏障,而非final域不具备这个保障。
    3. 若final域为引用类型:此时JVM会增加一条约束,构造函数中final域引用对象的成员的写入,不能与构造函数的return语句重排序,构造函数外则没有这样的保障。
    4. 注意final引用不能从构造函数中“溢出”,存在线程安全问题。
    参考文献

    你以为你真的了解final吗?

    相关文章

      网友评论

          本文标题:Java并发中final的应用总结

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