A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看书模拟了一个经典的死锁程序,可是还是没有出现死锁现象,这是代码。

  1. public class DeadLock {

  2.         /**
  3.          * @param args
  4.          */
  5.         static String knife="餐刀",fork="叉子";
  6.         static class A extends Thread{
  7.                 public void run(){
  8.                         synchronized(knife){
  9.                                 System.out.println("甲拿起了"+knife+",等待"+fork+"...");
  10.                                 try {
  11.                                         Thread.sleep(100);
  12.                                 } catch (InterruptedException e) {
  13.                                         synchronized(fork){
  14.                                         }
  15.                                         System.out.println("甲又拿起了"+fork);
  16.                                 }
  17.                         }
  18.                 }
  19.         }
  20.         static class B extends Thread{
  21.                 public void run(){
  22.                         synchronized(fork){
  23.                                 System.out.println("乙拿起了"+fork+",等待"+fork+"...");
  24.                                 try {
  25.                                         Thread.sleep(100);
  26.                                 } catch (InterruptedException e) {
  27.                                 }
  28.                                 synchronized(knife){
  29.                                         System.out.println("乙又拿起了"+knife);
  30.                                 }
  31.                         }
  32.                 }
  33.         }
  34.         static class Demo extends Thread{
  35.                 public Demo(){
  36.                         this.setDaemon(true);
  37.                 }
  38.                 public void run(){
  39.                         while (true) {
  40.                                 try {
  41.                                         Thread.sleep(1000);
  42.                                 } catch (InterruptedException e) {
  43.                                 }
  44.                                 System.out.println("守护线程:程序正在运行中...");
  45.                         }
  46.                 }
  47.         }
  48.         public static void main(String[] args) {
  49.                 new A().start();
  50.                 new B().start();
  51.                 new Demo().start();

  52.         }

  53. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马