单例模式 --饿汉式/懒汉式
/*区分恶汉式和懒汉式
* 饿汉式:坏处:对象加载时间过长
* 好处:饿汉式是线程安全的
* 懒汉式:好处:延迟对象的创建
* 目前的写坏的坏处:线程不安全。--->到多线程内容时:再修改
*
*/
单例模式的饿汉式一上来就创建出来
public class SingletonTest { public static void main(String[] args) { Bank ins1 = Bank.getInstance(); Bank ins2 = Bank.getInstance(); System.out.println(ins1 == ins2);//true } } class Bank{ private Bank() { } private static Bank instance = new Bank(); public static Bank getInstance() { return instance; } }
懒汉式,啥时候需要啥时候创建。
public class SingletonTest { public static void main(String[] args) { Bank ins1 = Bank.getInstance(); Bank ins2 = Bank.getInstance(); System.out.println(ins1 == ins2);//true } } class Bank{ private Bank() { } private static Bank instance = null; public static Bank getInstance() { if(instance == null) { instance = new Bank(); } return instance; } }

解决懒汉式的线程安全问题:
class Bank{ private static Bank instance = null; private Bank(){ } // public synchronized static Bank getInstance(){ public static Bank getInstance(){ //方式一:效率稍差 // synchronized (Bank.class){ // if(instance == null){ // instance = new Bank(); // } // return instance; // } //方式二: 效率更高。 if(instance == null){ synchronized (Bank.class){ if(instance == null){ instance = new Bank(); } } } return instance; } }

浙公网安备 33010602011771号