黑马程序员-单例设计模式线程安全

来源:互联网 发布:java循环阶乘 编辑:程序博客网 时间:2024/06/07 17:03

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


单例设计模式:

1、恶汉式

2、懒汉式

此处有三个考点:

1、懒汉式单例模式,当多线程时会产生安全问题。当多个线程同时进入了if(s==null)判断语句内,则会出现new出多个对象,与单例设计相违背。

2、同步函数的锁是this,而静态同步函数的锁是本身Class对象 Single.class

3、加同步即可解决线程安全问题,此方式虽然解决了多线程安全问题,但是线程每次执行到此处都需判断锁,效率很低。外加if双重判断,即可提高效率

class Single    //恶汉式{private static final Single s =new Single();private Single(){}public  static Single getInstance(){return s;}}






class Single                      //考点1:懒汉式单例模式,当多线程时会产生安全问题。{private static Single s=null;private Single(){}public static Single getInstance(){if(s==null){synchronized(Single.class)//考点2:静态函数内的锁只能是本身类对象Single.class。{  //考点3:此方式虽然解决了多线程安全问题,但是线程每次执行到此处都需判断锁,效率很低,  //      外加if双重判断,即可提高效率。if(s==null){s=new Single();}}}return s;}}


0 0
原创粉丝点击