代码实例解读如何安全发布对象

时间:2023-02-02 11:13:32
摘要:在高并发环境下如何安全的发布对象实例。

本文分享自华为云社区《【高并发】如何安全的发布对象(含各种单例代码分析)》,作者:冰 河。

今天,为大家带来一篇有技术含量的文章,那就是在高并发环境下如何安全的发布对象实例。

发布对象:使一个对象能够被当前范围之外的代码所使用
对象溢出:是一种错误的发布,当一个对象还没有构造完成时,就使它被其他线程所见

不安全的发布示例代码:

package io.binghe.concurrency.example.publish;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
@Slf4j
public class UnsafePublish {
 private String[] states = {"a", "b", "c"};
 public String[] getStates(){
 return states;
    }
 public static void main(String[] args){
 UnsafePublish unsafePublish = new UnsafePublish();
 log.info("{}", Arrays.toString(unsafePublish.getStates()));
 unsafePublish.getStates()[0] = "d";
 log.info("{}", Arrays.toString(unsafePublish.getStates()));
    }
}