JAVA单例模式:懒汉式,饿汉式
生活随笔
收集整理的這篇文章主要介紹了
JAVA单例模式:懒汉式,饿汉式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今天復(fù)習(xí)了一下java的單例模式,寫了懶漢式和餓漢式的實(shí)現(xiàn)例子。代碼如下:
?
1.懶漢式單例
package com.lf.shejimoshi;/*** @classDesc: 類描述:(懶漢式單例測(cè)試類) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/ public class SingletonTest {/*** @functionDesc: 功能描述:(測(cè)試懶漢式單例模式) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/public static void main(String[] args) {Student s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1==s2);} }/*** @classDesc: 類描述:(學(xué)生類) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/ class Student{//定義全局變量private static Student student;//私有化構(gòu)造函數(shù)private Student(){}/*** @functionDesc: 功能描述:(對(duì)外暴露方法) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/public static Student getStudent(){if(student==null){//加上同步鎖,保證線程安全synchronized(Student.class){student = new Student();}}return student;} }?
2.餓漢式單例
package com.lf.shejimoshi;/*** @classDesc: 類描述:(測(cè)試類) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/ public class Singleton2Test {public static void main(String[] args) {Teacher teacher1 = Teacher.getTeacher();Teacher teacher2 = Teacher.getTeacher();System.out.println(teacher1==teacher2);}}/*** @classDesc: 類描述:(餓漢式單例) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/ class Teacher{//類加載的時(shí)候初始化一次private static final Teacher teacher = new Teacher();//私有化構(gòu)造函數(shù)private Teacher(){super();}/*** @functionDesc: 功能描述:(對(duì)外暴露的方法) * @author baobaolan* @createTime 2018年1月10日 * @version v1.0*/public static Teacher getTeacher(){return teacher;}}?
3.總結(jié)
懶漢式線程不安全,需要加上同步鎖,同步鎖影響了程序執(zhí)行效率。
? ? ? 餓漢式天生線程安全,類加載的時(shí)候初始化一次對(duì)象,效率比懶漢式高。
?
轉(zhuǎn)載于:https://www.cnblogs.com/leifei/p/8258949.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的JAVA单例模式:懒汉式,饿汉式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hystrix总结之多返回值命令
- 下一篇: linux 安装jdk(install