package com.jue.test;public class MainClass {private Object o1 = new Object();private Object o2 = new Object();/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMainClass mc =new MainClass();mc.startRead();mc.startWrite();}public void startRead() {new Thread() {@Overridepublic void run() {// TODO Auto-generated method stubread();}}.start();}public void startWrite() {new Thread() {@Overridepublic void run() {// TODO Auto-generated method stubwrite();}}.start();}public void read() {synchronized(o1){System.out.println("read - lock o1");sleep(20);synchronized(o2){System.out.println("read+++++++++++++++++++");}}}public void write() {synchronized(o2){System.out.println("write - lock o2");sleep(20);synchronized(o1){System.out.println("write-------------------");}}}void sleep(int mis){try{Thread.sleep(mis);}catch(Exception e){}}}
result:
read - lock o1
write - lock o2