死锁-嵌套容易发生死锁

2017-08-06 19:01:11来源:CSDN作者:tomorrow_fine人点击

分享
第七城市

直接看例子:

public class DealThread implements Runnable{    public String username;    public Object lock1=new Object();    public Object lock2=new Object();    public void setFlag(String username){        this.username=username;    }    @Override    public void run() {        if(username.equals("a")){            synchronized (lock1){                try {                    System.out.println("username = "+username);                    Thread.sleep(3000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                synchronized (lock2){                    System.out.println("按lock1->lock2代码顺序执行了");                }            }        }        if(username.equals("b")){            synchronized (lock2){                try {                    System.out.println("username = "+username);                    Thread.sleep(3000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                synchronized (lock1){                    System.out.println("按 lock2->lock1代码顺序执行了");                }            }        }    }}
public class Run {    public static void main(String[] args){        try {            DealThread t1=new DealThread();            t1.setFlag("a");            Thread thread1=new Thread(t1);            thread1.start();            Thread.sleep(100);            t1.setFlag("b");            Thread thread2=new Thread(t1);            thread2.start();        } catch (InterruptedException e) {            e.printStackTrace();        }    }}
你在的等我,我在等你,就永远等了= =(要行动起来啊)

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台