...
Code Block | ||
---|---|---|
| ||
public class MissedSignal implements Runnable {
private static LinkedList list = new LinkedList();
private static int buffer_count = 5;
private int number; // Selects function based on thread number
public MissedSignal(int number) {
this.number = number;
}
public void run (){
synchronized(list) {
try {
if(number == 1) {
System.out.println("Thread 1 started...");
while(buffer_count == 0) {
System.out.println("Beginning wait() Thread 1...");
list.wait();
System.out.println("Thread 1 got notified this time...");
}
System.out.println("Exiting because Thread 1 condition is false...");
} else if(number == 2) {
System.out.println("Thread 2...");
while(buffer_count > 0) {
System.out.println("Beginning wait() Thread 2...");
list.wait();
System.out.println("Thread 2 got notified this time...");
}
System.out.println("Exiting because the thread 2 condition is false...");
} else if(number == 3) {
Thread.sleep(2000);
list.notify();
}
} catch (InterruptedException ie) {
// Handle the exception
}
}
}
public static void makeThread1True() {
buffer_count = 0;
}
public static void makeThread2True() {
buffer_count = 10;
}
public static void main(String[] args) throws IOException {
makeThread1True();
Runnable runnable1 = new MissedSignal(1);
Thread t1 = new Thread(runnable1);
t1.start();
try {
new Thread().sleep(5000);
makeThread2True();
} catch (InterruptedException e) {
// Handle the exception
}
Runnable runnable2 = new MissedSignal(2);
Thread t2 = new Thread(runnable2);
t2.start();
Runnable runnable3 = new MissedSignal(3);
Thread t3 = new Thread(runnable3);
t3.start();
}
}
|
...