美文网首页
final 安全发布

final 安全发布

作者: M_lear | 来源:发表于2022-08-10 17:58 被阅读0次

    java语言规范

    class FinalFieldExample { 
        final int x;
        int y; 
        static FinalFieldExample f;
    
        public FinalFieldExample() {
            x = 3; 
            y = 4; 
        } 
    
        static void writer() {
            f = new FinalFieldExample();
        } 
    
        static void reader() {
            if (f != null) {
                int i = f.x;  // guaranteed to see 3  
                int j = f.y;  // could see 0
            } 
        } 
    }
    

    当在一个线程创建对象,然后在另一个线程使用这个对象时,就需要注意安全发布的问题。

    如上例所示,一个线程执行writer方法,另一个线程执行reader方法,那么java语言规范保证final字段x一定是3,而非final字段y可能看到未初始化的状态0。

    Thread-safety with the Java final keyword

    相关文章

      网友评论

          本文标题:final 安全发布

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