1 package zzuli.acmen.sigleton;
2
3 /**
4 * 单例模式,顾名思义也就是整个程序中只有这么一个实例,这样的有什么用处呢?也就是用在通常的只需要一个实例,每一次都是调用一个的
5 * 以下实现的是用户的连接数的统计,可以用在工厂模式里面,因为里面的工厂都是只有一个对象!
6 * @author Acmen
7 *
8 */
9 public class Singleton {
10 /*
11 * 第一种实现方法
12 */
13
14 // private static Singleton sinleton = new Singleton();
15 //
16 // private Singleton(){}
17 //
18 // public static Singleton getSin(){
19 //
20 // return sinleton;
21 //
22 // }
23 //
24 /*
25 * 第二中实现方法
26 */
27
28 private static Singleton singleton = null;
29
30 private Singleton(){}
31
32 //记住必须加前面的那个 synchronized 为什么自己体会
33 public static synchronized Singleton getSin(){
34
35 if(singleton == null)
36 singleton = new Singleton();
37 return singleton;
38
39 }
40
41 private int i;
42
43 public synchronized void add(){
44
45 i++;
46 System.out.println("现在的数目是"+i);
47
48 }
49
50 }
1 package zzuli.acmen.sigleton;
2
3 public class Main {
4
5 /**
6 * @param args
7 */
8 //测试用例
9 public static void main(String[] args) {
10
11 for(int i=0;i<100;i++){
12 new Thread(new Runnable() {
13
14 public void run() {
15 Singleton sin = Singleton.getSin();
16 sin.add();
17
18 }
19 }).start();
20
21
22 }
23
24 }
25
26 }