コード例 #1
0
  public void run() {
    Random randomGenerator = new Random();
    try {
      while (true) {
        // Thread.sleep(randomGenerator.nextInt(100)); //not sleeping but thinking
        int leftHash = System.identityHashCode(left);
        int rightHash = System.identityHashCode(right);

        if (leftHash < rightHash) {
          System.out.println("Phil " + index + " finishes thinking.");
          left.pickup();

          System.out.println("Phil " + index + " picks up left fork.");
          right.pickup();
          System.out.println("Phil " + index + " picks up right fork.");
          Thread.sleep(randomGenerator.nextInt(100)); // eating
          System.out.println("Phil " + index + " finishes eating.");
          left.putdown();
          System.out.println("Phil " + index + " puts down left fork.");
          right.putdown();
          System.out.println("Phil " + index + " puts down right fork.");
        } else {
          System.out.println("Phil " + index + " finishes thinking.");
          right.pickup();

          System.out.println("Phil " + index + " picks up left fork.");
          left.pickup();
          System.out.println("Phil " + index + " picks up right fork.");
          Thread.sleep(randomGenerator.nextInt(100)); // eating
          System.out.println("Phil " + index + " finishes eating.");
          right.putdown();
          System.out.println("Phil " + index + " puts down left fork.");
          left.putdown();
          System.out.println("Phil " + index + " puts down right fork.");
        }
      }
    } catch (InterruptedException e) {
      System.out.println("Don't disturb me while I am sleeping, well, thinking.");
    }
  }