第一种
public sychronized void test(){
}
第二种
private final Object lock=new Object();
public void test(int i){
sychronized (lock){
if(i<0){
lock.wait();
}
lock.notifyAll();
}
}
两种方法都能实现方法互斥,如果方法内不需要判定,比如i<0的情况不需要排除,就用第一种,但是如果需要排除i<0的情况,就用第二种,如果第一种方法里有if(i<0){}当程序运行到这里,就会产生死锁,别的线程进不来,程序卡死在if(i<0){}里