publci class Singleton{ private static Singleton instance = null; private Singleton(){} public static Singleton getInstance(){ if(instance == null){ synchronized(Singleton.class){ if(instance == null) instance = new Singleton(); } } return instance; } }
调用者得到的都是一个实例对象,同时操作一个实例不会有问题吗?
只要对象没状态信息(比如对象包含可变的字段等)就没任何问题
所以你要写代码保证他不出问题
单例对象不能有状态信息,这一点在Spring 的Bean需要特别注意
有状态说明线程能够进行读取,多线程下,就会导致数据的一致性得不到保证
只要你写的代码没有 BUG,就没问题。。所有问题都可以算是 BUG。