diff options
Diffstat (limited to 'libjava/testsuite/libjava.lang/Thread_Wait_2.java')
-rw-r--r-- | libjava/testsuite/libjava.lang/Thread_Wait_2.java | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.java b/libjava/testsuite/libjava.lang/Thread_Wait_2.java deleted file mode 100644 index a03cb943812..00000000000 --- a/libjava/testsuite/libjava.lang/Thread_Wait_2.java +++ /dev/null @@ -1,144 +0,0 @@ -// Create many threads waiting on a monitor. Interrupt some of them. Do the -// others wake up correctly with notify() and/or notifyAll()? -// Origin: Bryce McKinlay <bryce@albatross.co.nz> - -import java.util.Vector; - -class Waiter extends Thread -{ - Object monitor; - int thread_num; - boolean interrupted = false; - boolean notified = false; - - Waiter (Object monitor, int thread_num) - { - this.monitor = monitor; - this.thread_num = thread_num; - } - - public void run() - { - synchronized (monitor) - { - try - { - monitor.wait(); - notified = true; - } - catch (InterruptedException x) - { - interrupted = true; - } - } - - } -} - -public class Thread_Wait_2 -{ - static Vector threads; - static Object monitor = new Object(); - - static final int NUM_THREADS = 10; - - public static void main(String args[]) - { - - - try - { - makeThreads (); - - Thread.sleep(250); - - // Interrupt a few threads... - Waiter i1 = (Waiter) threads.elementAt(3); - Waiter i2 = (Waiter) threads.elementAt(4); - Waiter i3 = (Waiter) threads.elementAt(9); - i1.interrupt(); - i2.interrupt(); - i3.interrupt(); - - // Call notify the exact number of times required to wake the remaining - // threads. - synchronized (monitor) - { - for (int i=0; i < NUM_THREADS -3 ; i++) - { - monitor.notify (); - } - } - - joinAll(); - printStatus(); - - // Repeat all the above, but use notifyAll() instead. - makeThreads(); - - Thread.sleep(250); - - // Interrupt a few threads... - i1 = (Waiter) threads.elementAt(0); - i2 = (Waiter) threads.elementAt(1); - i3 = (Waiter) threads.elementAt(9); - i1.interrupt(); - i2.interrupt(); - i3.interrupt(); - - // Call notifyAll to wake the remaining threads. - synchronized (monitor) - { - monitor.notifyAll (); - } - - joinAll(); - printStatus(); - - } - catch (InterruptedException x) - { - System.out.println (x); - } - - - } - - static void makeThreads() - { - threads = new Vector(NUM_THREADS); - - for (int i=0; i < NUM_THREADS; i++) - { - Waiter w = new Waiter(monitor, i); - w.start(); - threads.addElement(w); - } - } - - static void joinAll() - { - try - { - for (int i=0; i < threads.size(); i++) - { - Thread t = (Thread) threads.elementAt(i); - t.join(); - } - } - catch (InterruptedException x) {} - } - - static void printStatus() - { - for (int i=0; i < threads.size(); i++) - { - Waiter w = (Waiter) threads.elementAt(i); - if (w.interrupted) - System.out.println (i + " interrupted."); - if (w.notified) - System.out.println (i + " notified."); - } - } - -} |