MySQL全面瓦解15:视图

private Singleton(){}//加入了同步代码,解决线程不安全问题
public static synchronized Singlenton getInstance(){if(singleton==null){
singleton=new Singleton();}
return singleton;}
}优缺点说明
解决了线程不安全的问题
效率太低了,每个线程在想获得类的实例时候,执行getInstance()方法都要进行同步。而其实这个方式执行一次实例化代码就够了,后面的想获得该类实例直接return就行了。方法进行同步效率太低结论;在实际开发中,不推荐使用这种方式。
懒汉式(线程安全,同步代码块)
代码
class Singleton{private static Singleton singleton;
private Singleton(){}public static Singleton getInstance(){
if(singleton==null){//同代码块
synchronized (Singleton.class){singleton=new Singleton();
}return singleton;
}}
}优缺点说明
这种方式,本意是相对四种方法的改进,因为前面同步方法效率太低,改为同步生产实例的代码块。
但是这种同步并不能起到线程同步的作用。跟第三种实现方式遇到的情形一致,加入一个线程进入了if(singleton==null)判断语句块,还未来得及往下执行,另外一个线程也通过了这个判断语句,这时便会产生多个实例。结论:在实际开发中,不能使用这种方式。
双重检查
代码演示
class Singleton{//volatile把它认为是一个轻量级的synchronized
private static volatile Singleton singleton;private Singleton(){}
public static Singleton getInstance(){if(singletonnull){
//保证只有一个线程在这里执行,当下一个线程进来的时候,//上一个线程已经创建完了singleton已经不等于null了,就不会创建了
//提供一个静态的共有方法,加入双重检查代码,解决线程安全问题,同时解决懒加载问题//同时保证了效率,推荐使用
synchronized(Singleton.class){if(singletonnull){
singleton=new Singleton();}
}}
return singleton;}
}优缺点说明
Double-“Check概念是多线程开发中常使用的,如果代码中所示,我们进行了两次if(singletonnull)检查,这样就可以保证线程安全了。
这样,实例化代码只用执行一次,后面再次访问时,判断if(singletonnull),直接return实例化对象,也避免的反复进行方法同步。线程安全;延迟加载;效率较高
结论;在实际开发中,推荐使用这种单例设计模式。静态内部类
代码演示
//当外部类装载的时候静态内部类不会被装载的
//当我们调用静态方法时静态内部类的时候只会装载一次,而且装载的时候线程是安全的。public class SingletonTest07 {
public static void main(String[] args) {Singleton instance = Singleton.getInstance();
Singleton instance1 = Singleton.getInstance();System.out.println(instance == instance1);//true
System.out.println("instance.hashCode=" + instance.hashCode());//instance1.hashCode=1163157884System.out.println("instance1.hashCode=" + instance1.hashCode());//instance1.hashCode=1163157884
}}
//静态内部类完成,推荐使用class Singleton {
//构造器私有化private Singleton() { }
//写静态内部类,该类有一个静态属性private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();}
//提供一个静态的共有方法,直接返回SingletonInstance.INSTANCEpublic static Singleton getInstance() {
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...://github.com/threebb10/wnkjpyqzbs/discussions/357
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...://www.github.com/threebb10/wnkjpyqzbs/discussions/365
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
https://github.com/threebb10/...
https://www.github.com/threeb...
http://github.com/threebb10/w...
return SingletonInstance.INSTANCE;
}
}
优缺点说明

这种方式采用了类装载的机制来保证初始化实例时只有一个线程。

你可能感兴趣的:(javascript)