package com.smart.thread;
/**
-
Created by jinxiaoyu on 17/4/11.
*/
public class ThreadTestSyncObj {
private Object lock1 = new Object();
private Object lock2 = new Object();public static void main(String[] args) {
final ThreadTestSyncObj t = new ThreadTestSyncObj();
for (int i = 0; i < 5; i++) {
new Thread() {
@Override
public void run() {
super.run();
t.test1();
}
}.start();
new Thread() {
@Override
public void run() {
super.run();
t.test2();
}
}.start();
}
}public synchronized void test1() {
System.out.print("test1 start\n");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("test1 end\n");
}public void test2() {
synchronized(lock1) {
System.out.print("test2 start\n");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("test2 end\n");
}
}
}
test1 start
test2 start
test1 end
test2 end
test1 start
test2 start
test1 end
test2 end
test1 start
test2 start
test1 end
test1 start
test2 end
test2 start
test1 end
test1 start
test2 end
test2 start
test1 end
test2 end