多线程_死锁问题概述和使用

来源:互联网 发布:通科商务营销软件 编辑:程序博客网 时间:2024/05/18 14:42
package cn.itcast_02;/* * 同步的弊端: * A:效率低 * B:容易产生死锁 *  * 死锁: * 两个或者两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象。 *  * 举例: * 中国人,美国人吃饭案便。 * 正常情况: * 中国人:筷子2支 * 美国人:刀和叉 * 现在: * 中国人:筷子1支,刀1把 * 美国人:筷子1支,叉1把 */public class DieLockDemo {public static void main(String[] args) {// 创建线程对象DieLock dl1 = new DieLock(true);DieLock dl2 = new DieLock(false);// 启动线程dl1.start();dl2.start();}}


package cn.itcast_02;public class MyLock {// 创建两把锁对象public static final Object objA = new Object();public static final Object objB = new Object();}


package cn.itcast_02;public class DieLock extends Thread {private boolean flag;public DieLock(boolean flag) {this.flag = flag;}@Overridepublic void run() {if (flag) {synchronized (MyLock.objA) {System.out.println("if objA");synchronized (MyLock.objB) {System.out.println("if objB");}}} else {synchronized (MyLock.objB) {System.out.println("else objB");synchronized (MyLock.objA) {System.out.println("else objA");}}}}}


0 0
原创粉丝点击