java线程死锁-相互调用

来源:互联网 发布:php java 开发api 编辑:程序博客网 时间:2024/05/08 06:38
测试类
package com.dead.lock;public class TestDead {public static void main(String[] args) {//DeadLockTest dl =new DeadLockTest();SDeadLackTest dl =new SDeadLackTest();Thread tha= new Thread(dl);tha.start();//DeadLockTest dlb =new DeadLockTest();SDeadLackTest dlb =new SDeadLackTest();dlb.changeFlag();Thread thb= new Thread(dlb);thb.start();}}
run<pre name="code" class="java">package com.dead.lock;public class DeadLockTest implements Runnable {public boolean flag=true;private static Object obj1=new Object();private static Object obj2=new Object();public void changeFalg(){this.flag=false;}@Overridepublic void run() {// TODO Auto-generated method stubif(flag){synchronized (obj1) {System.out.println("锁住1");try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();synchronized (obj2) {System.out.println("锁2");}}}}if(!flag){synchronized (obj2) {System.out.println("锁住2");try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();synchronized (obj1) {System.out.println("锁1");}}}}}}

                                             
0 0