1. 程式人生 > >設計模式之單例模式>>應用場景及實現

設計模式之單例模式>>應用場景及實現

arr unit 應用 lose sys time 初始 sin turn

定義

單例模式(Singleton),也叫單子模式,是一種常用的軟件設計模式。對於系統而言該實例有且僅有一個。

應用場景

線程池、數據庫池、用於對系統做初始化的實例,提供給關聯系統調用的接口(任務提交部分)

不適用成員變量多變的場景。

1、實現方式-餓漢模式

技術分享圖片
 1 package com.learn.designpattern.singleton;
 2 
 3 import java.util.concurrent.ArrayBlockingQueue;
 4 import java.util.concurrent.ExecutorService;
 5 import
java.util.concurrent.ThreadPoolExecutor; 6 import java.util.concurrent.TimeUnit; 7 8 /** 9 * 10 * @author zhujj 11 */ 12 13 public class ThreadPoolUntil { 14 15 private final static ExecutorService executorService= new ThreadPoolExecutor(5,20,0,TimeUnit.SECONDS,new ArrayBlockingQueue<>(128));
16 17 private ThreadPoolUntil() { 18 // TODO Auto-generated constructor stub 19 } 20 21 public static ExecutorService getIntance() { 22 return executorService; 23 } 24 public static void main(String[] arg0) { 25 ThreadPoolUntil.getIntance().execute(new
Runnable() { 26 @Override 27 public void run() { 28 boolean control = true; 29 int i =0; 30 while(control ) { 31 System.out.println(">>>>>"); 32 i++; 33 if(i>3) control = false; 34 } 35 } 36 }); 37 } 38 }
View Code

2、實現方式-懶漢模式+雙重校驗鎖

技術分享圖片
 1 package com.learn.designpattern.singleton;
 2 
 3 import java.util.concurrent.ArrayBlockingQueue;
 4 import java.util.concurrent.ExecutorService;
 5 import java.util.concurrent.ThreadPoolExecutor;
 6 import java.util.concurrent.TimeUnit;
 7 
 8 /**
 9  * 
10  * @author zhujj
11  */
12 
13 public class ThreadPoolUntil {
14 
15     private static volatile ThreadPoolUntil threadPoolUntil;
16 
17     private ThreadPoolUntil() {
18         // TODO Auto-generated constructor stub
19     }
20     
21     public static ThreadPoolUntil getIntance() {
22         if(threadPoolUntil==null) {
23             synchronized(ThreadPoolUntil.class) {
24                 if(threadPoolUntil==null) {
25                     threadPoolUntil = new ThreadPoolUntil();
26                 }
27             }
28         }
29         return threadPoolUntil;
30     }
31 }
View Code

推薦使用方式一

設計模式之單例模式>>應用場景及實現