单例类: public class MySingleton1 { |
线程类:run()方法里面调用单例 |
测试代码:起10个线程,每个线程都是一个单独的实例 |
看结果: 证明多线程多实例下,获取的确实是同一实例 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个线程,都引用同一实例 |
看结果: 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 |
有状态单例 public class MySingleton1 { } |
线程类: 在线程中获取单例,并且在第1号线程和第5号线程分别改变单例的状态 public class MyThreadForStateful implements Runnable{ } |
测试代码: 执行效果: 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 |
联系客服