|
public class deadlock {
public static void main(string[] args) {
object obj = new object();
object obj1 = new object();
deadlockthread1 d1 = new deadlockthread1(obj, obj1);
deadlockthread2 d2 = new deadlockthread2(obj, obj1);
new thread(d1, "线程1" ).start();
new thread(d2, "线程2" ).start();
}
}
class deadlockthread1 implements runnable {
private object obj;
private object obj1;
public deadlockthread1(object obj, object obj1) {
this .obj = obj;
this .obj1 = obj1;
}
@override
public void run() {
synchronized (obj) {
try {
thread.sleep( 1000 );
synchronized (obj1) {
obj1.getclass();
}
} catch (interruptedexception e) {
e.printstacktrace();
}
}
}
}
class deadlockthread2 implements runnable {
private object obj;
private object obj1;
public deadlockthread2(object obj, object obj1) {
this .obj = obj;
this .obj1 = obj1;
}
@override
public void run() {
synchronized (obj1) {
try {
thread.sleep( 1000 );
synchronized (obj) {
obj.getclass();
}
} catch (interruptedexception e) {
|