死锁问题

来源:互联网 发布:网络id 编辑:程序博客网 时间:2024/05/17 08:34
package com.mth.deadlock;//出现死锁是因为嵌套同步导致的public class Dead implements Runnable {private boolean flag;public Dead(boolean flag) {super();this.flag = flag;}@Overridepublic void run() {while (true) {if (flag == true) {synchronized (LockA.lockA) {System.out.println("if......lockA");synchronized (LockB.lockB) {System.out.println("if....lockB");}}} else {synchronized (LockB.lockB) {System.out.println("else....Lockb");synchronized (LockA.lockA) {System.out.println("else....LockA");}}}}}public static void main(String[] args) {Dead dead1 = new Dead(true);Dead dead2 = new Dead(false);Thread t1 = new Thread(dead1);Thread t2 = new Thread(dead2);t1.start();t2.start();}}



LockA:

package com.mth.deadlock;//A锁public class LockA {public static LockA lockA = new LockA();}


LockB:

package com.mth.deadlock;//B锁public class LockB {public static LockB lockB = new LockB();}


0 0
原创粉丝点击