Java教程

Java单例模式(饿汉式、线程安全的懒汉式)

本文主要是介绍Java单例模式(饿汉式、线程安全的懒汉式),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、什么是单例模式

  应程序需要,某个类只能创建一个实例对象,并且该类只提供一个取得其对象实例的方法(静态方法)。

二、代码实现

  1、饿汉式:提前准备好了一个对象等你拿去用

 1 package com.atguigu.java;
 2 
 3 //饿汉式
 4 public class SingleObject {
 5     
 6     //创建一个静态的实例对象
 7     private static SingleObject instance = new SingleObject();
 8     
 9     //私有化构造器
10     private SingleObject() {
11         System.out.println("Hello World!");
12     }
13 
14     //提供公共的获取静态实例对象的方法
15     public static SingleObject getInstance() {
16         return instance;
17     }
20 }

  2、懒汉式:你什么时候要用就什么时候造

 1 package com.atguigu.java;
 2 
 3 //懒汉式
 4 public class LazySingleObject {
 5 
 6     //没有提前造好一个私有的静态对象,只进行声明
 7     private static LazySingleObject instance;
 8 
 9     //私有化构造器
10     private LazySingleObject(){
11         System.out.println("Hello Java!");
12     }
13 
14     //提供公共的静态方法获取实例对象,并加上锁,确保线程安全
15     //方法一、
16 //    public static synchronized LazySingleObject getInstance(){
17 //
18 //        if(instance == null){
19 //            instance = new LazySingleObject();
20 //        }
21 //
22 //        return instance;
23 //    }
24 
25     //方法二
26     public static LazySingleObject getInstance(){
27 
28         if(instance == null){
29             synchronized(LazySingleObject.class){
30                 instance = new LazySingleObject();
31             }
32         }
33         return instance;
34     }
35 
36 }

  3.代码使用

 1 package com.atguigu.java;
 2 
 3 public class SingleObjectDemo {
 4     public static void main(String[] args) {
 5 
 6         //饿汉式
 7         SingleObject singleObject = SingleObject.getInstance();
 8 
 9         //懒汉式
10         LazySingleObject singleObject1 = LazySingleObject.getInstance();
11 
12     }
13 }

  效果展示:

 

这篇关于Java单例模式(饿汉式、线程安全的懒汉式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!