public class testSynchronzied { private static final Object a = new Object(); private static final Object b = new Object(); public static void main(String[] args) { new Thread(new Syn(true)).start(); new Thread(new Syn(false)).start(); } static class Syn implements Runnable{ private boolean flag; public Syn(boolean flag) { this.flag = flag; } @Override public void run() { if(flag){ synchronized (a){ System.out.println(Thread.currentThread().getName()+":抢到a"); synchronized (b){ System.out.println(Thread.currentThread().getName()+":抢到b"); } } }else { synchronized (b){ System.out.println(Thread.currentThread().getName()+":抢到b"); synchronized (a){ System.out.println(Thread.currentThread().getName()+":抢到a"); } } } } } }