package test.access.foreign;
public class Foreign {
public static void main(String args[]){
MyThread mt1=new MyThread();
mt1.flag=false;
new Thread(mt1).start();
MyThread mt=new MyThread();
new Thread(mt).start();
}
/**
* 打印结果:
*/
}
class Personnel{
private String name;
private String say;
private String get;
public Personnel(String name,String say,String get){
this.name=name;
this.get=get;
this.say=say;
}
void say(){
System.out.println(name+":"+say);
}
void get(){
System.out.println(name+"得到"+get);
}
}
class MyThread implements Runnable{
private static Personnel p1=new Personnel("警察","把人质放了","人质");
private static Personnel p2=new Personnel("劫匪","把枪放下","枪");
public boolean flag=true;
@Override
public void run() {
if(flag){
synchronized(p1){
p1.say();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(p2){
p1.get();
}
}
}else{
synchronized(p2){
p2.say();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(p1){
p2.get();
}
}
}
}
}
模拟线程死锁
最新推荐文章于 2021-02-25 00:14:21 发布