62,616
社区成员
发帖
与我相关
我的任务
分享
public class RunnableTest implements Runnable {
private int flag = 1;
private Object obj1 = new Object(), obj2 = new Object();
public void run() {
System.out.println("flag=" + flag);
if (flag == 1) {
synchronized (obj1) {
System.out.println("我已经锁定obj1,休息0.5秒后锁定obj2去!");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (obj2) {
System.out.println("1");
}
}
}
if (flag == 0) {
synchronized (obj2) {
System.out.println("我已经锁定obj2,休息0.5秒后锁定obj1去!");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (obj1) {
System.out.println("0");
}
}
}
}
public static void main(String[] args) throws InterruptedException {
RunnableTest test = new RunnableTest();
Thread thread1 = new Thread(test);
Thread thread2 = new Thread(test);
System.out.println("线程开始喽!");
test.flag = 1;
thread1.start();
Thread.sleep(10);
test.flag = 0;
thread2.start();
}
}