首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

java设计方式_单例

2013-09-06 
java设计模式_单例public class Singleton {public static void main(String[] args) throws Exception {S

java设计模式_单例

public class Singleton {public static void main(String[] args) throws Exception {System.out.println(Class.forName("S1"));System.out.println(Class.forName("S2"));System.out.println(Class.forName("S3"));System.out.println(Class.forName("S4"));}}/* * 预先加载法  * 优点:1.线程安全的, 2.在类加载的同时已经创建好一个静态对象,调用时反应速度快。 * 缺点: 资源利用效率不高,可能这个单例不会需要使用也被系统加载 * (资源利用效率不高,可能getInstance永远不会执行到,但是执行了该类的其他静态方法 * 或者加载了该类(class.forName),那么这个实例仍然初始化了) */class S1 {private S1() {System.out.println("ok1");}private static S1 instance = new S1();public static S1 getInstance() {return instance;}}/* * initialization on demand,延迟加载法 (考虑多线程)  * 优点:1.资源利用率高  * 缺点:第一次加载是发应不快,多线程使用不必要的同步开销大 */class S2 {private S2() {System.out.println("ok2");}private static S2 instance = null;public static synchronized S2 getInstance() {if (instance == null)instance = new S2();return instance;}}/* * initialization on demand - double check 延迟加载法改进之双重检测 (考虑多线程) * 优点:1.资源利用率高 * 缺点:第一次加载是发应不快 ,由于java 内存模型一些原因偶尔会失败 */class S3 {private S3() {System.out.println("ok3");}private static S3 instance = null;public static S3 getInstance() {if (instance == null) {synchronized (S3.class) {if (instance == null)instance = new S3();}}return instance;}}/* * initialization on demand holder (考虑多线程)  * 优点:1.资源利用率高 缺点:第一次加载是发应不快 */class S4 {private S4() {System.out.println("ok4");}private static class S4Holder {static S4 instance = new S4();}public static S4 getInstance() {return S4Holder.instance;}}

热点排行