多线程死锁代码

来源:互联网 发布:齐鲁证券交易软件 编辑:程序博客网 时间:2024/05/24 15:37

死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

代码实战:

/** * Created by FireLang on 2017-07-18. */public class DieThread extends Thread{    /**     * 定义两把锁     */    private String lock1 = "Lock1";    private String lock2 = "Lock2";    /**     * 运行if 或 else 代码     */    private boolean flag = true;    public DieThread(boolean flag){        //初始化 flag 的值,让它执行 if 或 else 代码        this.flag = flag;    }    /**     * 书写死锁代码     */    @Override    public void run() {        if(flag){            synchronized (lock1){                System.out.println("进入 IF LOCK1 !!!!!");                synchronized (lock2){                    System.out.println("进入 IF LOCK2 !!!!!");                }            }        }else{            synchronized (lock2){                System.out.println("进入 ELSE LOCK2 !!!!!");                synchronized (lock1){                    System.out.println("进入 ELSE LOCK1 !!!!!");                }            }        }    }    /**     * 测试代码     * @param args     */    public static void main(String[] args) {        DieThread d1 = new DieThread(true);        DieThread d2 = new DieThread(false);        d1.start();        d2.start();    }}
原创粉丝点击