Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- public class BakeryAlgorithm extends Thread {
- private A a;
- private int number1;
- private static boolean[] entering;
- private static int[] number;
- public BakeryAlgorithm(A a, int number1) {
- this.a = a;
- this.number1 = number1;
- }
- public void lock(int i) {
- entering[i] = true;
- number[i] = 1 + Arrays.stream(number).max().getAsInt();
- entering[i] = false;
- for (int j = 1; j < number.length; j++) {
- if (j != i) {
- while (entering[j]) {
- Thread.yield();
- }
- while (number[j] != 0 && (number[j] < number[i]) || (number[i] == number[j] && i > j)) {
- Thread.yield();
- }
- }
- }
- }
- public void unlock(int i) {
- number[i] = 0;
- }
- @Override
- public void run() {
- lock(number1);
- a.setValue(a.getValue() + 1);
- System.out.println("Number: " + number1 + ". Value = " + a.getValue());
- unlock(number1);
- }
- public void initializeArray(int n) {
- entering = new boolean[n];
- number = new int[n];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement