复现并发问题:
package review.bank;/*** Created by kodulf on 2017/2/26.*/
public class SingleInstanceLazyMan {private SingleInstanceLazyMan(){}static SingleInstanceLazyMan singleInstanceLazyMan ;//synchronized 如果不添加,那么会出现三个进程一起调度的情况public static SingleInstanceLazyMan getInstance(){if(singleInstanceLazyMan==null){System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());System.out.println("before new "+Thread.currentThread().getName());singleInstanceLazyMan = new SingleInstanceLazyMan();System.out.println("after new "+Thread.currentThread().getName());System.out.println("after new "+Thread.currentThread().getName());System.out.println("after new "+Thread.currentThread().getName());System.out.pri