饿汉式:
类在每次加载的时候,对象就已经创建好了。
package demo04; public class Demo01 { private static Demo01 k = new Demo01(); private Demo01(){ } private static Demo01 method(){ return k; } }
懒汉式:
类在每次加载的时候,当你需要这个对象的时候,才会为你创建。
package demo04; public class Demo01 { private volatile static Demo01 k; //volatile优化性能,禁止指令重排。 private Demo01() { } private synchronized static Demo01 method() { // synchronized保证线程的有序执行。 //里层判断是为了单例对象的实例化,外层判断是为了提高效率,检测实例化对象成功可以直接返回对象。 if (k == null) { if (k == null) { Demo01 k = new Demo01(); } } return k; } }