package com.qianfeng.day22_Thread.DeadLock;
public static void main(String[] args) {
BangFei bangfei = new BangFei();
RichMan richman = new RichMan();
bangfei.start();
richman.start();
}
}
class MyObject {
public static Object obj1 = new Object();
public static Object obj2 = new Object();
}
class BangFei extends Thread {
@Override
public void run() {
synchronized (MyObject.obj1) {//需要2把锁才能完成所有的操作。
System.out.println("绑匪说:得到了500万");
//如果需要提高发生死锁的几率。可以让这个线程睡眠一会。
synchronized (MyObject.obj2) {
System.out.println("绑匪说:放了你儿子");
}
}
}
}
class RichMan extends Thread {
@Override
public void run() {
synchronized (MyObject.obj2) {//需要2把锁才能完成所有的操作。
System.out.println("富翁说:得到了儿子");
synchronized (MyObject.obj1) {
System.out.println("富翁说:给你500万");
}
}
}
}
/**
两个或者多个线程之间相互等待,导致线程都无法执行,叫做线程死锁
*/
public static void main(String[] args) {
BangFei bangfei = new BangFei();
RichMan richman = new RichMan();
bangfei.start();
richman.start();
}
}
class MyObject {
public static Object obj1 = new Object();
public static Object obj2 = new Object();
}
class BangFei extends Thread {
@Override
public void run() {
synchronized (MyObject.obj1) {//需要2把锁才能完成所有的操作。
System.out.println("绑匪说:得到了500万");
//如果需要提高发生死锁的几率。可以让这个线程睡眠一会。
synchronized (MyObject.obj2) {
System.out.println("绑匪说:放了你儿子");
}
}
}
}
class RichMan extends Thread {
@Override
public void run() {
synchronized (MyObject.obj2) {//需要2把锁才能完成所有的操作。
System.out.println("富翁说:得到了儿子");
synchronized (MyObject.obj1) {
System.out.println("富翁说:给你500万");
}
}
}
}