2019.4.11
單例模式:
1、懶漢式
package com.danli; /*** 懶漢式* @author Administrator**/ public class User {private static User user = null;private User() {}synchronized public static User getUser() {if(user==null) {user = new User();}return user;} }package com.danli; /*** 線程 類* @author Administrator**/ public class MyThread implements Runnable{@Overridepublic void run() {for(int i = 0;i<10;i++) {User user = User.getUser();System.out.println(user);}}}
package com.danli; /*** 測試類* @author Administrator**/ public class Main {public static void main(String[] args) {MyThread mt = new MyThread();Thread t1 = new Thread(mt);Thread t2 = new Thread(mt);Thread t3 = new Thread(mt);Thread t4 = new Thread(mt);t1.start();t2.start();t3.start();t4.start();} }
測試示例:
2、餓漢式
package com.danli; /*** 餓漢式* @author Administrator**/ public class User2 {private static final User2 user = new User2();private User2() {}public static User2 getUser() {return user;} }package com.danli; /*** 線程 類* @author Administrator**/ public class MyThread implements Runnable{@Overridepublic void run() {for(int i = 0;i<10;i++) {User2 user = User2.getUser();System.out.println(user);}} }
package com.danli; /*** 測試類* @author Administrator**/ public class Main {public static void main(String[] args) {MyThread mt = new MyThread();Thread t1 = new Thread(mt);Thread t2 = new Thread(mt);Thread t3 = new Thread(mt);Thread t4 = new Thread(mt);t1.start();t2.start();t3.start();t4.start();} }
結果示例:
3、枚舉單例:
package com.enumsingle; /*** 枚舉單例* @author Administrator**/ public class Single{//私有化無參構造private Single(){}//創建靜態獲取實例方法getInstance()public static Single getInstance(){return EnumSingle.INSTANCE.getInstance();}private static enum EnumSingle{INSTANCE;//私有化實例對象private Single single;//通過枚舉類無參構造方法創建對象private EnumSingle(){single = new Single();}public Single getInstance(){return single;}} }package com.enumsingle; /*** 線程 類* @author Administrator**/ public class MyThread implements Runnable{@Overridepublic void run() {for(int i = 0;i<10;i++) {Single es = Single.getInstance();System.out.println(es);}} }
?
?
package com.enumsingle; /*** 測試類* @author Administrator**/ public class Main {public static void main(String[] args) {MyThread mt = new MyThread();Thread t1 = new Thread(mt);Thread t2 = new Thread(mt);Thread t3 = new Thread(mt);Thread t4 = new Thread(mt);t1.start();t2.start();t3.start();t4.start();} }結果示例
?
轉載于:https://www.cnblogs.com/chenxj/p/10692433.html
總結
- 上一篇: ASP.NET WebAPI Strin
- 下一篇: 学习进度条-7