java多线程与死锁_我的java多线程死锁例子为什么没写对?

这篇文章详细探讨了Java中未实现死锁的代码示例,展示了如何通过`DeathRunnable`类创建潜在死锁情景,并介绍了如何理解和避免死锁的发生。关键在于理解synchronized关键字的使用和线程调度规则。
摘要由CSDN通过智能技术生成

代码是这样的没实现死锁publicclassDeathLockTest{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDeathRunnabler=newDeathRunnable();Threadt1=newThread(r,"t1...

代码是这样的 没实现死锁

public class DeathLockTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

DeathRunnable r=new DeathRunnable();

Thread t1=new Thread(r,"t1");

Thread t2=new Thread(r,"t2");

t1.start();

t2.start();

}

}

class DeathRunnable implements Runnable{

Object obj1=new Object();

Object obj2=new Object();

@Override

public void run() {

// TODO Auto-generated method stub

if(Thread.currentThread().getName().equals("t1")){

synchronized(obj2){

System.out.println("线程1锁定obj1");

}

synchronized(obj1){

System.out.println("线程1锁定obj2");

}

}else if(Thread.currentThread().getName().equals("t2")){

synchronized(obj1){

System.out.println("线程2锁定obj2");

}

synchronized(obj2){

System.out.println("线程2锁定obj1");

}

}

}

}

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值