Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.21 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. public class BakeryAlgorithm extends Thread {
  4.     private A a;
  5.     private int number1;
  6.     private static boolean[] entering;
  7.     private static int[] number;
  8.  
  9.     public BakeryAlgorithm(A a, int number1) {
  10.         this.a = a;
  11.         this.number1 = number1;
  12.     }
  13.  
  14.     public void lock(int i) {
  15.         entering[i] = true;
  16.         number[i] = 1 + Arrays.stream(number).max().getAsInt();
  17.         entering[i] = false;
  18.         for (int j = 1; j < number.length; j++) {
  19.             if (j != i) {
  20.                 while (entering[j]) {
  21.                     Thread.yield();
  22.                 }
  23.                 while (number[j] != 0 && (number[j] < number[i]) || (number[i] == number[j] && i > j)) {
  24.                     Thread.yield();
  25.                 }
  26.             }
  27.         }
  28.     }
  29.  
  30.     public void unlock(int i) {
  31.         number[i] = 0;
  32.     }
  33.  
  34.     @Override
  35.     public void run() {
  36.         lock(number1);
  37.         a.setValue(a.getValue() + 1);
  38.         System.out.println("Number: " + number1 + ". Value = " + a.getValue());
  39.         unlock(number1);
  40.  
  41.     }
  42.  
  43.     public void initializeArray(int n) {
  44.         entering = new boolean[n];
  45.         number = new int[n];
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement