一天一个模式_2008-12-05_(Singleton 单例模式)

1. Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在,提供一个全局访问点。

2. 在项目的很多地方都会用到它,比如说数据库的链接、日志对象、线程池 等等。

3. 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃 圾回收(garbage collection)。

 

4. 单例模式的例子(懒汉模式)

 

public class Singleton {

 

 private static Singleton singleton;
 
 private Singleton(){
 
 }
 
 public synchronized static Singleton getInstance(){
  if(singleton == null){
   singleton = new Singleton();
  }
  return singleton;
 }
 
 public static void main(String[] args) {
 
 }

}

 

5. 上面的例子如果使用多线程就会出现错误,因为当类还没有初始化时,如果有两个线程同时进行,就有可能创建两个对象,解决的办法是1 使用同步 。 2 在声明属性时就初始化对象

 

6. (饿汉模式)

public class Singleton {

 

 private static Singleton singleton = new Singleton();
 
 private Singleton(){
 
 }
 
 public static Singleton getInstance(){
  if(singleton == null){
   singleton = new Singleton();
  }
  return singleton;
 }
 
 public static void main(String[] args) {
 
 }

}

 

在实际使用中偏向于(饿汉模式)

你可能感兴趣的:(多线程)