首页 > 代码库 > 多线程中死锁产生的演示
多线程中死锁产生的演示
package com.huowolf; /*死锁的含义: * 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。 * 由于线程被无限期地阻塞,因此程序不能正常运行。 * * 死锁出现的情形:同步中嵌套同步。 * 但也可能和谐 * * 避免死锁的一个通用的经验法则是: * 当几个线程都要访问共享资源A、B、C时,保证使每个线程都按照同样的顺序去访问它们, * 比如都先访问A,在访问B和C。 */ //死锁示例: class Test implements Runnable{ private boolean flag; public Test(boolean flag) { this.flag = flag; } @Override public void run() { if(flag) { while(true) { synchronized (MyLock.locka) { System.out.println("if locka"); synchronized (MyLock.lockb) { System.out.println("if lockb"); } } } }else { while(true) { synchronized (MyLock.lockb) { System.out.println("else lockb"); synchronized (MyLock.locka) { System.out.println("else locka"); } } } } } } class MyLock { static Object locka = new Object(); static Object lockb = new Object(); } public class DeadLockTest { public static void main(String[] args) { Thread t1 = new Thread(new Test(true)); Thread t2= new Thread(new Test(false)); t1.start(); t2.start(); } }
多线程中死锁产生的演示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。