Java同步中的死锁问题

来源:互联网 发布:mac部署maven环境变量 编辑:程序博客网 时间:2024/06/10 14:08

Java同步中的死锁问题

  • 死锁出现的原因:两个同步代码块或者同步函数的锁不同。

  • 下边是一个例子

class Lock{    public static Object locka=new Object();    public static Object lockb=new Object();}class Test implements Runnable{    private boolean flag;    public Test(boolean flag){        this.flag=flag;    }    @Override    public void run() {        if(flag){            synchronized (Lock.locka){                System.out.println("if--locka");                synchronized (Lock.lockb){                    System.out.println("if--lockb");                }            }        }else{            synchronized (Lock.lockb){                System.out.println("else--lockb");                synchronized (Lock.locka){                    System.out.println("else--locka");                }            }        }    }}public class DeadLock{    public  static void main(String []args){        Thread t1=new Thread(new Test(true));        Thread t2=new Thread(new Test(false));        t1.start();        t2.start();    }}
1 0
原创粉丝点击