//要避免死锁
//死锁的例子
/*class Ticket implements Runnable{
private int num = 500;
private Object obj = new Object();
boolean flag = true;
public void run(){
if(flag){
while(true){
//同步代码块 obj锁
//内部只有拿到了this锁才能执行
synchronized(obj){
fun();//fun()同步函数 this锁
}
}
}
else
while(true)
fun();
}
//同步函数 this锁
//内部只有拿到了obj锁才能执行
public synchronized void fun(){
//同步代码块 obj锁
synchronized(obj){
if(num>0){
try{Thread.sleep(20);}catch(InterruptedException e){e.printStackTrace();}
System.out.println(Thread.currentThread().getName()+"...sale..."+num--);
}
}
}
}
class test{
public static void main(String[] args){
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
t1.start();
//让主线程放弃CPU
try{Thread.sleep(20);}catch(InterruptedException e){e.printStackTrace();}
t.flag = false;
t2.start();
}
}*/
Java——线程死锁
最新推荐文章于 2018-04-08 06:08:38 发布