gpt4 book ai didi

java - 在java中注入(inject)/访问线程安全单例的最佳方法

转载 作者:行者123 更新时间:2023-11-30 03:04:31 26 4
gpt4 key购买 nike

我对这段代码完全感到困惑,因为我知道其目的是对 DataService 对象的单个实例进行线程安全访问,但我不知道它是否实现了这一点。

它对我来说很突出调用者类:

protected final DataService dataService = DataService.getInstance();

单例类方法:

private static DataService dService=null;
public static synchronized DataService getInstance() {
if (dService == null)
dService = new DataService();
return dService;
}

在调用类中使用 protected final修饰符可以实现什么?

它们是必要的还是好的做法?

最佳答案

第一行的 protected 和 Final 修饰符对您所指的单例性质没有任何贡献。

protected只是访问修饰符,final决定变量是否可以重新赋值。

是什么真正使它成为单例,由definition of singleton事实上,您只创建了一个 dService 对象(通过 new DataService() ),并且由于该方法是同步的,因此可以保证该方法不会同时被调用,这可能会导致错误创建两个单独的对象。

关于java - 在java中注入(inject)/访问线程安全单例的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com