Aprendizaje avanzado JAVA (3)

En la prueba escrita, el modo singleton escrito a mano debe ser seguro para subprocesos.

Resolución de problemas de seguridad de estilo perezoso en modo singleton Modo de
diseño: después de una gran cantidad de práctica resumida y teorizada, se resumen y teorizan la estructura óptima del código, el estilo de programación y el método de pensamiento de resolución de problemas.
El
Inserte la descripción de la imagen aquí
patrón de diseño singleton de "rutina" : solo puede existir una instancia de objeto en una clase
Inserte la descripción de la imagen aquí

public class SingletonTest1{
    
    
 public static void main(String[] args){
    
    
  Bank bank1 = new Bank();
  Bank bank2 = new Bank();
 }
}
//**饿汉式**上来就new个对象
class Bank{
    
    
//1.私有化类的构造器 
   private Bank(){
    
    
//2.内部创建类的对象,要求此对象也声明为静态的;
private static Bank instance = new Bank();
//3.提供公共的静态的方法,返回类的对象
     public static Bank getInstance(){
    
    
return instance;
     }
  }
}
//**懒汉式**啥时候用啥时候造

public class SingletonTest2{
    
    
 public static void main(String[] args){
    
    
  Order order1 = Order.getInstance();
  Order order2 = Order.getInstance();
 }
}
class Order{
    
    
//1.私有化类的构造器 
   private Order(){
    
    
//2.声明当前类的对象,没有初始化
private static  Order instance = null;
//3.声明public、static的返回当前类对象的方法
     public static Order getInstance(){
    
    
      		if(instance == null){
    
    
			instance = new Order();
			}
			return instance;
     }
  }
}

El perezoso no es seguro para los hilos. Método 1: baja eficiencia

public class SingletonTest2{
    
    
 public static void main(String[] args){
    
    
  Order order1 = Order.getInstance();
  Order order2 = Order.getInstance();
 }
}
class Order{
    
    
   private Order(){
    
    
private static  Order instance = null;
   //1  public static synchronized Order getInstance(){
    
    
		public static  Order getInstance(){
    
    
   //2   synchroized(Order.class){
    
    
      		if(instance == null){
    
    
			instance = new Order();
			}
			return instance;
     }
  }
}

class Order{
    
    
   private Order(){
    
    
private static  Order instance = null;
		public static  Order getInstance(){
    
    
		//效率较高,相当于加个牌子,告诉后来线程不需要等待
      		if(instance == null){
    
    
      	      synchroized(Order.class){
    
    
      	      if(instance == null){
    
    
			    instance = new Order();
			}
			return instance;
     }
  }
}

Supongo que te gusta

Origin blog.csdn.net/HenryFanQAQ/article/details/110456441
Recomendado
Clasificación