一个死锁的代码
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("一手给钱!!!");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)