请教一下:
下面的单例会有线程安全问题吗?
即如果这句话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();
} }}谢谢线程安全单例

解决方案 »

  1.   

    这种叫做饿汉模式
    利用了java static的特性
    就是java中static变量只会初始化一次,就是在类装载的时候
      

  2.   

    个人觉得有可能的,虽然private static Singleton instance=new Singleton();是static的,但是new了呀。如果两个线程同时执行到了这句话呢?给你一篇文章看看
    http://blog.csdn.net/liushuijinger/article/details/9069801
      

  3.   

    static 的东西是ClassLoader加载类的时候执行的,而ClassLoader加载类的过程是全程synchronized