-
单例模式是一种常用的軟件设计模式
-
在它的核心结构中只包含一个被成为单例类的特殊类。通过单例模式可以保证系统中一个类职业一个实例而且该实例易于外界访问从而方面对实例个数的控制并节约系统资源。
-
如果希望在系统中某个类的对象只能存在一个单例模式是最好的解决方案。
-
优点:只有调用方法才创建对象调用之前不会占用内存
-
缺点:在多线程模式下不安全
-
跟懒汉式的区别,直接创建对象
-
饿汉式不管有没有调用getInstance方法,都会预先在系统中创建一个静态对象
-
懒汉式不会预先创建对象只囿在第一次调用时才创建对象。
-
优点:在多线程模式下是安全的
- 缺点:没有调用方法前就加载会占用系统内存。
-
饿汉式本身就是线程安全的可以直接用于多线程而不会出现问题的。
-
懒汉式是非线程安全的解決方式如下:
关键字:synchronized:可以用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候同一时刻最多只有一个线程執行这个段代码。
使用双重检测机制实现线程安全的懒汉式
使用静态内部类实现线程安全的单例模式
* 系统默认情况下只运行主线程 //主线程中开启两个子线程 * 线程运行期间执行的代码 * java线程安全的单例模式三种方式实现多线程 * 必须重写run方法 * (get方法必须在线程运行之后才可以调用) * 线程池配合使用比较好 * (匿名类方式实现)