在线设计平台源码,宁波seo推广开发,网站网址怎么找,白城网站建设哪家好线程死锁演示#xff0c;线程锁演示,模拟JVM的线程次序调度模拟JVM的线程次序调度注释A#xff0c;不注释B#xff0c;一般不死锁注释B#xff0c;不注释A#xff0c;死锁都不注释#xff0c;随机package org.he.bin;/** * author BenHe * email qing878gmail.com * for …线程死锁演示线程锁演示,模拟JVM的线程次序调度模拟JVM的线程次序调度注释A不注释B一般不死锁注释B不注释A死锁都不注释随机package org.he.bin;/** * author BenHe * email qing878gmail.com * for description dead lock */public class DeadLock extends Thread { private boolean threadFlag; private Object lock1 ; private Object lock2 ; public DeadLock(boolean threadFlag,Object lock1,Object lock2) { this.threadFlag threadFlag; this.lock1lock1; this.lock2lock2; } Override public void run() { try { if (threadFlag) methodA(); else methodB(); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } void methodA() throws InterruptedException { synchronized (lock2) { Thread.sleep(10); // point A System.out.println(this.getName():lock lock2); System.out.println(this.getName():wait for lock1); synchronized (lock1) { System.out.println(this.getName():in methodA); } } } void methodB() throws InterruptedException {// Thread.sleep(10); //point B synchronized (lock1) { System.out.println(this.getName():lock lock1); System.out.println(this.getName():wait for lock2); synchronized (lock2) { System.out.println(this.getName():in methodB); } } } /** * param args */ public static void main(String[] args) { Object lock1 new Object(); Object lock2 new Object(); new DeadLock(true,lock1,lock2).start(); new DeadLock(false,lock1,lock2).start(); }}//该片段来自于http://byrx.net