class DLockThread
extends Thread{
static Object a =
new Object();
static Object b =
new Object();
String firstObj = "" ;
public DLockThread(String
firstObj, String threadName){
this .firstObj =
firstObj;
super .setName(threadName);
}
public void
run() {
while (
true )
if ( "a" .equals(firstObj)){
synchronized (a){
//获取对象a的锁,然后去获取对象b的锁
System.out.println(Thread.currentThread().getName()+
"--->" +a.toString());
synchronized (b){
System.out.println(Thread.currentThread().getName()+
"--->" +b.toString());
}
}
} else if
( "b" .equals(firstObj)) {
synchronized (b){
System.out.println(Thread.currentThread().getName()+
"--->" +b.toString());
synchronized (a){
System.out.println(Thread.currentThread().getName()+
"--->" +a.toString());
}
}
}
}
}
public class
DLockThreadTest{
public static
void main(String[] args)
{
DLockThread t1 = new
DLockThread( "a"
, "t1" );
DLockThread t2 = new
DLockThread( "b"
, "t2" );
t1.start();
t2.start();
}
}
|