設計模式之單例模式>>應用場景及實現
阿新 • • 發佈:2019-04-21
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 importView Codejava.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(newRunnable() { 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 }
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
推薦使用方式一
設計模式之單例模式>>應用場景及實現