public class Main {
// 这里必须是类,int不能加到synchronized中
Integer a = 1;
Integer b = 2;
public static void main(String[] args) {
final Main m = new Main();
new Thread(new Runnable(){
public void run() {
while(true){
synchronized (m.a) { // 这个线程先给a加锁,
synchronized (m.b) { // 然后再给b加锁
System.out.println(m.a + " " + m.b);
}
}
}
}
}).start();
new Thread(new Runnable(){
public void run() {
while(true){
synchronized (m.b) { // 这个线程先给b加锁
synchronized (m.a) { // 然后再给a加锁
System.out.println(m.b + " " + m.a);
}
}
}
}
}).start();
}
}