package com.luowen.test; public class DealLockTest { public static void main(String[] args) { Go g1 = new Go(true); Go g2 = new Go(false); Thread t1 = new Thread(g1); Thread t2 = new Thread(g2); t1.start(); try{Thread.sleep(5);} catch(Exception e){} t2.start(); } } class MyLock { final public static Object locka = new Object(); final public static Object lockb = new Object(); } class Go implements Runnable { private boolean flag; Go(boolean flag) { this.flag = flag; } @Override public void run() { // TODO Auto-generated method stub if(flag) { while(true) { synchronized (MyLock.locka) { System.out.println(Thread.currentThread().getName() + "================if get the locka"); synchronized (MyLock.lockb) { System.out.println(Thread.currentThread().getName() + "================if get the locka and lockb"); } } } } else { while(true) { synchronized (MyLock.lockb) { System.out.println(Thread.currentThread().getName() + "================else get the lockb"); synchronized(MyLock.locka) { System.out.println(Thread.currentThread().getName() + "================else get the locka and lockb"); } } } } } }