单例的两种线程安全实现
1. 利用static final进行启动时加载例子:public class Configuration{?? ?private ?static final Configuration instance = new Configuration();
?? ?private Configuration(){} // 似有的构造函数,确保单例
?? ?public static Configration getInstance(){ return instance; }}
2. Lazy Loadedpublic class Configuration{?? ?private Configuration instance;
?? ?private Configuration() { }?? ??? ?Syncrinize public static Configuration getInstance(){?? ? ? ?if(instance == null){?? ? ? ? ? ?instance = new Configuration();?? ? ? ?}?? ? ? ?return instance; }}
1 楼 备战备荒 2011-04-12 貌似第二种的单例是县城不安全的吧。 2 楼 arganzheng 2011-04-13 备战备荒 写道貌似第二种的单例是县城不安全的吧。
这里有个step-by-step的介绍:
http://www.javabeginner.com/learn-java/java-singleton-design-pattern
应该没有问题,还望指教! 3 楼 arganzheng 2011-04-13 @备战备荒: 如果还不相信,这里有一篇step-by-step,并且包含测试例子的好文章,非常不错,强烈推荐:
http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html
4 楼 arganzheng 2011-04-20 备战备荒 写道貌似第二种的单例是县城不安全的吧。
使用Synchonized可以确保线程同步和主内存与线程工作内存之间的同步,不会有问题的。