一个死锁的代码
public class Demo{
public static void main(String[] args) {
Object g = new Object();
Object m = new Object();
Goods goods = new Goods(g,m);
Money money = new Money(g,m);
Thread thread1 = new Thread(goods);
Thread thread2 = new Thread(money);
thread1.start();
thread2.start();
}
}
class Goods implements Runnable{
Object goods;
Object money;
public Goods(Object goods, Object money) {
super();
this.goods = goods;
this.money = money;
}
@Override
public void run() {
while(true){
test();
}
}
private void test(){
synchronized(goods){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(money){}
}
System.out.println("一手给货!!!");
}
}
class Money implements Runnable{
Object goods;
Object money;
public Money(Object goods, Object money) {
super();
this.goods = goods;
this.money = money;
}
@Override
public void run() {
while(true){
test();
}
}
private void test(){
synchronized(money){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(goods){}
}
System.out.println("一手给钱!!!");
}
}