写一个死锁

Object lock = new ObJect();
syncronized(lock){

System.print.out.ln("a被占用");

}

synchronized(lock){
System.print.out.ln(“b被占用”);
}

如果有两段线程同时for循环跑这一段,那么输出结果一定是有序的 ababab…,说明当执行a代码时,b被卡住,当b开始执行,a被卡住。

相当于当a资源被占用,b资源才能被释放,b被占用a才能释放。

Object lock = new ObJect();
syncronized(lock){

System.print.out.ln("a被占用");
System.print.out.ln("b被占用");

}

synchronized(lock){
System.print.out.ln(“b被占用”);
System.print.out.ln(“a被占用”);
}

假如2条线程同时for循环跑这段代码,当b被占用时要去拿a,a被占用时要去拿b,最后互相等待。

你可能感兴趣的:(java基础)