• 自定义死锁


     1 package 多线程练习.锁学习;
     2 
     3 /*
     4    两个线程互相抱对方想要的锁 都在等待对方释放锁 所以卡死了
     5  */
     6 public class 自定义死锁 {
     7     public static void main(String[] args) {
     8         Runnable lileilei = new MakeUp(0, "李蕾蕾");
     9         Runnable hanmeimei = new MakeUp(0, "韩梅梅");
    10         new Thread(lileilei).start();
    11         new Thread(hanmeimei).start();
    12     }
    13 }
    14 
    15 //  口红
    16 class LipStick {
    17 }
    18 
    19 // 镜子
    20 class Mirror {
    21 }
    22 
    23 class MakeUp implements Runnable {
    24 
    25     // 保证独一份口红跟镜子
    26     static LipStick lipStick = new LipStick();
    27     static Mirror mirror = new Mirror();
    28     int choice;
    29     String grilName;
    30 
    31     public MakeUp(int choice, String grilName) {
    32         this.choice = choice;
    33         this.grilName = grilName;
    34     }
    35 
    36     @Override
    37     public void run() {
    38 
    39         if (choice == 0) {
    40 
    41             synchronized (lipStick) {
    42                 System.out.println(grilName + "拿到了口红,接着他要拿镜子");
    43                 try {
    44                     Thread.sleep(2000);
    45                 } catch (InterruptedException e) {
    46                     e.printStackTrace();
    47                 }
    48                 synchronized (mirror) {
    49                     System.out.println(grilName + "拿到了镜子");
    50                 }
    51             }
    52         } else {
    53 
    54             synchronized (mirror) {
    55                 System.out.println(grilName + "拿到了镜子,接着他要拿口红");
    56                 try {
    57                     Thread.sleep(2000);
    58                 } catch (InterruptedException e) {
    59                     e.printStackTrace();
    60                 }
    61                 synchronized (lipStick) {
    62                     System.out.println(grilName + "拿到了口红");
    63                 }
    64             }
    65         }
    66 
    67 
    68     }
    69 }
    两个线程互相抱对方想要的锁 都在等待对方释放锁 所以卡死了
  • 相关阅读:
    小明系列问题——小明序列
    Multiplication Table
    DZY Loves Colors
    Points
    Tree
    img标签中alt属性与title属性在seo的作用-摘自网友
    如何合理命名CSS文件——摘自网友
    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    英语
    10个CSS简写/优化技巧-摘自网友
  • 原文地址:https://www.cnblogs.com/wooroc/p/15810212.html
Copyright © 2020-2023  润新知