微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在不使用内置互斥功能的情况下用Java实现Petersons解决方案

如何解决在不使用内置互斥功能的情况下用Java实现Petersons解决方案

因此,对于我大学里的一个问题,我们被要求为该Java程序实现Petersons解决方案,并且已经声明我们只能添加一些变量,而不能显着更改代码。我对此很陌生,并努力使自己步入正轨,并希望获得任何帮助。

public class SlowRaceTwo {

      public static void main(String args []) throws Exception {

          MyThread.count = 0 ;

          MyThread thread1 = new MyThread() ;
          thread1.name = "A" ;
      

          MyThread thread2 = new MyThread() ;
          thread2.name = "B" ;
         
          thread1.start() ;
          thread2.start() ;

          thread2.join() ;
          thread1.join() ;

          System.out.println("MyThread.count = " + MyThread.count) ;
      }
  }

  class MyThread extends Thread {

      volatile static int count ;
      String name ;
      
      


      public void run() {

          for(int i = 0 ; i < 10 ; i++) {
              
  /* Critical section */
            delay() ;
            int x = count ;
            System.out.println("Thread " + name + " read " + x);
            delay() ;
            count = x + 1 ;
            System.out.println("Thread " + name + " wrote " + (x + 1)) ;
             /* */
  
          }
      }

      void delay() {

          int delay = (int) (1000 * Math.random()) ;
          try {
              Thread.sleep(delay) ;
          }
          catch(Exception e) {
          }
      }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?