- package org.he.bin;
- /**
- * @author BenHe
- * @email qing878@gmail.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.lock1=lock1;
- this.lock2=lock2;
- }
- @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://www.codesnippet.cn/detail/160120148549.html
来源: http://www.codesnippet.cn/detail/160120148549.html