0
在此代码中,创建了DeadLock d1和d2的两个对象,然后即使线程d1和d2进入死锁,也会为d1和d2创建所有资源的单独副本,即r1,r2,r3在访问的资源是什么原因谁能请正确Java扩展线程类中的线程死锁
import java.util.*;
class DeadLock extends Thread{
String r1="Oracle";
String r2="Sybase";
String r3="DB2";
DeadLock(String name){
super(name);
}
public void run(){
if(Thread.currentThread().getName().equals("Rama")){
acquireRamaResources();
}
else{
acquireSitaResources();
}
}
void acquireRamaResources(){
synchronized(r1){
System.out.println("Rama acquired Oracle");
synchronized (r2){
System.out.println("Rama acquired Sybase");
synchronized(r3){
System.out.println("Rama acquired DB2");
}
}
}
}
void acquireSitaResources(){
synchronized(r3){
System.out.println("Sita acquired DB2");
synchronized (r2){
System.out.println("Sita acquired Sybase");
synchronized(r1){
System.out.println("Sita acquired Oracle");
}
}
}
}
}
class Demo{
public static void main(String[]args){
DeadLock d1=new DeadLock("Rama");
DeadLock d2=new DeadLock("Sita");
d1.start();
d2.start();
}
}
非常感谢你回答这个问题,我是从一个星期抓我的头没有找到这个解决方案... –
@VijayGKulkarni肯定的是,如果它帮助,你可以接受答案。 –