请教一下:
下面的单例会有线程安全问题吗?
即如果这句话private static Singleton instance=new Singleton();不加同步,会有线程安全问题吗?public class Singleton { private Singleton(){}
private static Singleton instance=new Singleton();
public static Singleton getInstance(){
return instance;
}
public void test(){
System.out.println("this is a testing...");
}
}public class Main { public static void main(String[] args) {
System.out.println("test...");
for(int i=0;i<10;i++){
new Thread(new Runnable(){ @Override
public void run()
//这里有没有可能会出现并发导致上面的单例会出现多次的new Singleton()?
Singleton singleton=Singleton.getInstance();
singleton.test();
}}).start();
} }}谢谢线程安全单例
下面的单例会有线程安全问题吗?
即如果这句话private static Singleton instance=new Singleton();不加同步,会有线程安全问题吗?public class Singleton { private Singleton(){}
private static Singleton instance=new Singleton();
public static Singleton getInstance(){
return instance;
}
public void test(){
System.out.println("this is a testing...");
}
}public class Main { public static void main(String[] args) {
System.out.println("test...");
for(int i=0;i<10;i++){
new Thread(new Runnable(){ @Override
public void run()
//这里有没有可能会出现并发导致上面的单例会出现多次的new Singleton()?
Singleton singleton=Singleton.getInstance();
singleton.test();
}}).start();
} }}谢谢线程安全单例
利用了java static的特性
就是java中static变量只会初始化一次,就是在类装载的时候
http://blog.csdn.net/liushuijinger/article/details/9069801