Bully Algorithm in Distributed System (Java Code)
import [Link].*;
class BullyAlgorithm {
static int n, coordinator;
static boolean[] active;
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter number of processes: ");
n = [Link]();
active = new boolean[n + 1];
for (int i = 1; i <= n; i++) {
active[i] = true;
}
coordinator = n; // highest process is coordinator
[Link]("Current Coordinator is: " + coordinator);
while (true) {
[Link]("\n1. Crash a process");
[Link]("2. Recover a process");
[Link]("3. Display Coordinator");
[Link]("4. Exit");
[Link]("Enter choice: ");
int choice = [Link]();
switch (choice) {
case 1:
[Link]("Enter process to crash: ");
int crash = [Link]();
active[crash] = false;
[Link]("Process " + crash + " crashed.");
if (crash == coordinator) {
election(crash);
}
break;
case 2:
[Link]("Enter process to recover: ");
int recover = [Link]();
active[recover] = true;
[Link]("Process " + recover + " recovered.");
election(recover);
break;
case 3:
[Link]("Current Coordinator is: " + coordinator);
break;
case 4:
[Link](0);
}
}
}
static void election(int initiator) {
[Link]("Election initiated by process " + initiator);
coordinator = initiator;
for (int i = initiator + 1; i <= n; i++) {
if (active[i]) {
[Link]("Process " + i + " responds.");
election(i);
return;
}
}
[Link]("Process " + coordinator + " becomes new coordinator.");
}
}