代码片段(1)[全屏查看所有代码]
1. [代码]注意其中双重锁定的使用
01 | package 设计模式练习.单例模式; |
02 |
03 | public class SingleObject |
04 | { |
05 | private static SingleObject obj; |
06 | private static Object lock= new Object(); |
07 | |
08 | private SingleObject(){} |
09 | |
10 | public static SingleObject getInstance() |
11 | { |
12 | if (obj== null ) |
13 | { |
14 | synchronized (lock) |
15 | { |
16 | if (obj== null ) |
17 | { |
18 | obj= new SingleObject(); |
19 | } |
20 | } |
21 | } |
22 | return obj; |
23 | } |
24 | |
25 | public static void main(String[] args) |
26 | { |
27 | SingleObject obj1=SingleObject.getInstance(); |
28 | SingleObject obj2=SingleObject.getInstance(); |
29 | if (obj1==obj2) |
30 | { |
31 | System.out.println( "obj1和obj2引用同一对象!" ); |
32 | } |
33 | } |
34 | } |