import java.util.*;
class Single {
public static void main(String[] args) {
//注意如果不用final来修饰
List<Integer> list1 = Arrays.asList(1,2,3);
List<Integer> list2 = Arrays.asList(4,5,6);
new Thread(new Runnable(){
@Override
public void run(){
synchronized(list1){
for(int i: list1){
System.out.println(i);
}
//尝试不休息
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
synchronized (list2){
for(int i: list2){
System.out.println(i);
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
synchronized (list2){
for(int i: list2){
System.out.println(i);
}
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
synchronized (list1){
for(int i: list1){
System.out.println(i);
}
}
}
}
}).start();
}
}
Thread.sleep(1000);这个必须要有,不然不会死锁