zoukankan      html  css  js  c++  java
  • 死锁

    死锁

    public class DeadLock {
    
        public static void main(String[] args) {
            MakeUp g1 = new MakeUp(0, "小红");
            MakeUp g2 = new MakeUp(1, "小绿");
            g1.start();
            g2.start();
        }
    }
    //口红
    class Lipstick{
    
    }
    //镜子
    class Mirror{
    
    }
    //化妆
    class MakeUp extends Thread{
        //用static修饰,保证只有一份资源
        static Lipstick lipstick = new Lipstick();
        static Mirror mirror = new Mirror();
        int choice;
        String girlName;
        MakeUp(int choice,String girlName){
            this.choice = choice;
            this.girlName = girlName;
        }
        @Override
        public void run() {
            try {
                makeUp();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        public void makeUp() throws InterruptedException {
            if (choice == 0){
                 synchronized (lipstick){//获得口红的锁
                     System.out.println(this.girlName + "获得口红");
                     Thread.sleep(1000);
                     synchronized (mirror){//获得镜子的锁
                         System.out.println(this.girlName + "获得镜子");
                     }
                 }
    
            }else {
                synchronized (mirror){//获得镜子的锁
                    System.out.println(this.girlName + "获得镜子");
                    Thread.sleep(2000);
                    synchronized (lipstick){//获得口红的锁
                        System.out.println(this.girlName + "获得口红");
                    }
                }
            }
        }
    }
    

    产生死锁的必要条件:

    1. 互斥条件:一个资源只能被一个进程使用。
    2. 请求与保持条件:一个进程因请求资源而阻塞时,对以获得资源保持不放。
    3. 不剥夺条件:进程以获得的资源在未使用完之前不能被强行剥夺。
    4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源。
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    BUUCTF-[GYCTF2020]Blacklist 1 思路
    [强网杯 2019]随便注 WriteUp(three way)思路
    [GXYCTF2019]Ping Ping Ping 1思路
    [ACTF2020 新生赛]Include 思路
    [极客大挑战 2019]Secret File 思路
    [SUCTF 2019]EasySQL 思路
    java环境变量配置 详细
    [极客大挑战 2019]Upload 思路
    [极客大挑战 2019]Http 思路
    [ACTF2020 新生赛]Exec 思路
  • 原文地址:https://www.cnblogs.com/xd-study/p/13193984.html
Copyright © 2011-2022 走看看