/** * @Author guozhan * @Date 2020/12/10 19:52 * * 测试多线程的单例是否会互相干扰 * 结论:会互相影响 * 所以spring创建bean的时候要注意不必要的单例对象,或者说操作单例对象不要使用set */ public class SingletonTest { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { SingleUser singleUser = SingleUser.getInstance(); singleUser.setId("1"); System.out.println(singleUser.getId()); }); Thread thread1 = new Thread(() -> { SingleUser singleUser = SingleUser.getInstance(); String id = singleUser.getId(); System.out.println(id); }); thread.start(); TimeUnit.SECONDS.sleep(1); thread1.start(); } }
/** * @Author guozhan * @Date 2020/12/10 19:52 */ @Data public class SingleUser { private SingleUser() { } private String id; private static SingleUser singleUser = new SingleUser(); public static SingleUser getInstance() { return singleUser; } }