單例類: public class MySingleton1 { |
線程類:run()方法里面調(diào)用單例 |
測試代碼:起10個線程,每個線程都是一個單獨的實例 |
看結(jié)果: 證明多線程多實例下,獲取的確實是同一實例 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 com.machome.singleton.MySingleton1@ca0b6:827574 |
單例類和線程類都不變 |
就測試代碼改一下,起10個線程,都引用同一實例 |
看結(jié)果: com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 com.machome.singleton.MySingleton1@1b67f74:28737396 |
有狀態(tài)單例 public class MySingleton1 { } |
線程類: 在線程中獲取單例,并且在第1號線程和第5號線程分別改變單例的狀態(tài) public class MyThreadForStateful implements Runnable{ } |
測試代碼: 執(zhí)行效果: 0:com.machome.singleton.MySingleton1@ca0b6:null0 1:com.machome.singleton.MySingleton1@ca0b6:mac11 2:com.machome.singleton.MySingleton1@ca0b6:mac11 3:com.machome.singleton.MySingleton1@ca0b6:mac11 4:com.machome.singleton.MySingleton1@ca0b6:mac11 5:com.machome.singleton.MySingleton1@ca0b6:silly22 6:com.machome.singleton.MySingleton1@ca0b6:silly22 7:com.machome.singleton.MySingleton1@ca0b6:silly22 8:com.machome.singleton.MySingleton1@ca0b6:silly22 9:com.machome.singleton.MySingleton1@ca0b6:silly22 |