zoukankan      html  css  js  c++  java
  • 自定义死锁

     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 }
    两个线程互相抱对方想要的锁 都在等待对方释放锁 所以卡死了
  • 相关阅读:
    Yahoo 14条 雅虎十四条 优化原则【转】
    从HTML1到HTML5,回首HTML发展历史【转】
    HTML的发展历史【转】
    jquery中prop()方法和attr()方法的区别【转】
    一个文献综述的写法
    ammunition用法
    混了SQL连接就运行这个
    cruel用法
    ball up用法
    episode用法
  • 原文地址:https://www.cnblogs.com/wooroc/p/15810212.html
Copyright © 2011-2022 走看看