多线程里面,你们必定不会忘记有死锁这个概念。你们都知道,死锁就是2个线程,互相等待对方的资源,一直不能往下执行。下面我用简单的用java代码写一个死锁。java
public class Main{
private Object o1 = new Object(), 02 = new Object();
public static void main(String [] args){
Main m = new Main();
new Thread(){
public void run(){
synchroized(m.o1){
synchroized(m.o2){ System.out.println(Thread.getCurrentName());
}
}
}
}.start();
new Thread(){
synchroized(m.o2){
synchroized(m.o1){ System.out.println(Thread.getCurrentName());
}
}
}.start();
}
}
解决死锁的方案就是要执行顺序不出现互相等待的状况,出现了这种状况须要你让我退这种。就好像一条只能容一辆车过路的桥,若是两辆彻底方向相反的车,是否是势必就有一辆须要退出一条道让他先过呢,道理是同样的。web