700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 死锁是什么?死锁产生的条件?如何避免死锁?以及死锁的示例代码(Java代码)

死锁是什么?死锁产生的条件?如何避免死锁?以及死锁的示例代码(Java代码)

时间:2021-09-18 11:20:37

相关推荐

死锁是什么?死锁产生的条件?如何避免死锁?以及死锁的示例代码(Java代码)

文章目录

一、什么是死锁?二、产生死锁的条件?三、产生死锁的示例代码(java)四、如何避免死锁?

一、什么是死锁?

下面图片参考 JavaGuide中的内容

死锁的概念

死锁:指的是相互两个线程之间都需要获取对方的资源才能进行下一步,如果每个线程都不肯将自己所持有的资源释放掉,这时就会导致死锁了。

二、产生死锁的条件?

产生死锁的条件

三、产生死锁的示例代码(java)

代码实现

package DeadLock;public class DeadLock {//先定义两个静态类型的字符串,让两个字符串来作为锁,方便后序加锁public static String obj1 = "obj1";public static String obj2 = "obj2";public static void main(String[] args){Thread a = new Thread(new Lock1());Thread b = new Thread(new Lock2());a.start();b.start();}}//继承Runnable接口,实现多线程class Lock1 implements Runnable{@Overridepublic void run(){try{System.out.println("Lock1 running");while(true){synchronized(DeadLock.obj1){System.out.println("Lock1 lock obj1");Thread.sleep(3000);synchronized(DeadLock.obj2){System.out.println("Lock1 lock obj2");}}}}catch(Exception e){e.printStackTrace();}}}//继承Runnable接口,实现多线程class Lock2 implements Runnable{@Overridepublic void run(){try{System.out.println("Lock2 running");while(true){synchronized(DeadLock.obj2){System.out.println("Lock2 lock obj2");Thread.sleep(3000);synchronized(DeadLock.obj1){System.out.println("Lock2 lock obj1");}}}}catch(Exception e){e.printStackTrace();}}}

代码执行结果

四、如何避免死锁?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。