欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

deadLock

程序员文章站 2022-06-11 21:44:06
...
public class DeadLock {

    private static  Object o1 = new Object();  
    private static  Object o2 = new Object();  

    public static void main(String[] args) {  


        new Thread(()->{
            synchronized (o1) {
                System.out.println("t1 ---Get o1");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //需要资源o2 但是 t2 独占(未释放) -->互相竞争资源-->死锁
                synchronized(o2){
                    System.out.println("t1 ---Get o2");
                }
            }
        }).start();

        new Thread(()->{
            //抢占资源o2
            synchronized (o2) {
                System.out.println("t2 ---Get o2");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //需要资源 o1,但是 t1 独占(未释放) -->互相竞争资源-->死锁
                synchronized (o1) {
                    System.out.println("t2 ---Get o1");
                }
            }
        }).start();






    }  


}  
相关标签: 线程