gpt4 book ai didi

java - 在 Java 中使用 Singleton 的最佳方式

转载 作者:行者123 更新时间:2023-12-02 05:02:35 25 4
gpt4 key购买 nike

假设我们在 Java 中有一个线程安全的单例类,这将是使用它的最好或更好的方法。例如,假设我们有一个 Singleton 类:

public class MySingleTon {
// my thread-safe code goes here
}

我们有一个服务类,它以以下两种可能的方式使用上述单例:

1:

public class MyService {
MySingleton singleton;

public void myMethod1() {
singleton = MySingleton.getInstance();
// code ...
}

public void myMethod2() {
singleton = MySingleton.getInstance();
// code...
}
public void myMethod3() {
singleton = MySingleton.getInstance();
// code...
}
}

2:

public class MyService {

public void myMethod1() {
MySingleton singleton = MySingleton.getInstance();
// code ...
}

public void myMethod2() {
MySingleton singleton = MySingleton.getInstance();
// code...
}
public void myMethod3() {
MySingleton singleton = MySingleton.getInstance();
// code...
}
}

在情况一中,单例是通过实例变量引用的,而在情况 2 中,单例是作为方法局部变量引用的。考虑到上述两个片段都在多线程环境中使用,这是一个更好的选择,为什么?

最佳答案

我会用第三种方式定义它

public class MyService {
final static MySingleton singleton = MySingleton.getInstance();

public void myMethod1() {
// code ...
}

public void myMethod2() {
// code...
}
public void myMethod3() {
// code...
}
}

在所有情况下,线程安全性没有差异

关于java - 在 Java 中使用 Singleton 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116172/

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