方法一
public class Test {
private static Test t;
public Test() {
}
private static synchronized Test getTest(){
if (t==null){
return new Test();
}
return t;
}
}
特点
- 虽然是多线程安全的,但是每次使用getTest方法都需要进行同步,因此,效率比较低
方法二
public class Test {
private static Test t;
public Test() {
}
private static synchronized Test getTest() {
if (t == null) {
synchronized (Test.class) {
t = new Test();
}
}
return t;
}
}
特点
-这种方法会首先判断singleton是否为空,这个对象一旦被创建,在后期的调用过程中就不会进入同步的代码,因此,有更高的效率。