diff options
| author | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-28 02:44:06 +0000 |
|---|---|---|
| committer | bryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-28 02:44:06 +0000 |
| commit | 713eba072c5903a401778afb174de08cbd11a77d (patch) | |
| tree | 06674ef80e2e86692b58726dc0403136307bc01b /libjava/testsuite/libjava.lang/Thread_Interrupt.java | |
| parent | ff6fba0d15eea6dfb7ffd13b42f293a7430b7661 (diff) | |
| download | ppe42-gcc-713eba072c5903a401778afb174de08cbd11a77d.tar.gz ppe42-gcc-713eba072c5903a401778afb174de08cbd11a77d.zip | |
2004-07-27 Bryce McKinlay <mckinlay@redhat.com>
* testsuite/libjava.lang/TLtest.java: Reduce sleep time.
* testsuite/libjava.lang/Thread_Alive.java: Remove old email address.
Reduce sleep time.
* testsuite/libjava.lang/Thread_HoldsLock.java: Modify to work around
compiler bug.
* testsuite/libjava.lang/Thread_Interrupt.java: Remove old email
address. Reduce sleep times. Synchronize with target threads before
attempting to interrupt them. Don't try to calibrate yeild count,
instead, always loop for a fixed time.
* testsuite/libjava.lang/Thread_Join.java: Remove old email address.
* testsuite/libjava.lang/Thread_Monitor.java: Likewise.
* testsuite/libjava.lang/Thread_Wait.java: Likewise.
* testsuite/libjava.lang/Thread_Wait_2.java: Likewise.
* testsuite/libjava.lang/Thread_Wait_Interrupt.java: Likewise.
* testsuite/libjava.lang/pr179.java: Likewise.
* testsuite/libjava.lang/Thread_Sleep.java: Likewise. Reduce sleep
time. Remove upper bounds check on sleep time.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85248 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/testsuite/libjava.lang/Thread_Interrupt.java')
| -rw-r--r-- | libjava/testsuite/libjava.lang/Thread_Interrupt.java | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Interrupt.java index cb569c827c4..a69247422fe 100644 --- a/libjava/testsuite/libjava.lang/Thread_Interrupt.java +++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.java @@ -1,11 +1,21 @@ // Test interrupt() behaviour on a thread in wait(), sleep(), and spinning // in a loop. -// Origin: Bryce McKinlay <bryce@albatross.co.nz> -class Waiter extends Thread +class ThreadBase extends Thread +{ + boolean ready = false; + + synchronized void ready() + { + ready = true; + } +} + +class Waiter extends ThreadBase { public synchronized void run() { + super.ready(); System.out.println ("wait()"); try { @@ -22,14 +32,15 @@ class Waiter extends Thread } } -class Sleeper extends Thread +class Sleeper extends ThreadBase { public void run() { + super.ready(); System.out.println ("sleep()"); try { - sleep(2000); + sleep(5000); System.out.println("Error: sleep() completed normally."); } catch (InterruptedException x) @@ -42,40 +53,23 @@ class Sleeper extends Thread } } -class Looper extends Thread +class Looper extends ThreadBase { - // Return the number of Thread.yield()s we can do in 500ms. - static long calibrate () - { - long i = 1; - - for (int tries = 0; tries < 40; tries++) - { - long t = System.currentTimeMillis(); - for (long n = 0; n < i; n++) - Thread.yield(); - long t_prime = System.currentTimeMillis(); - if (t_prime - t > 500) - return i; - i *= 2; - } - // We have no system clock. Give up. - throw new RuntimeException ("We have no system clock."); - } - - static long yields = calibrate (); - public void run() { + super.ready(); System.out.println ("Busy waiting"); int count = 0; - for (long i=0; i < yields; i++) + long start = System.currentTimeMillis(); + while (true) { Thread.yield(); - count += 5; if (isInterrupted ()) break; + long now = System.currentTimeMillis(); + if ((now - start) > 5000) + break; } synchronized (this) { @@ -91,10 +85,11 @@ class Looper extends Thread } } -class Joiner extends Thread +class Joiner extends ThreadBase { public void run() { + super.ready(); System.out.println("join()"); try { @@ -133,11 +128,17 @@ public class Thread_Interrupt sleep_and_interrupt (j); } - public static void sleep_and_interrupt(Thread t) + public static void sleep_and_interrupt(ThreadBase t) { try { - Thread.sleep (250); + synchronized (t) + { + while (!t.ready) + t.wait(10); + } + + Thread.sleep (50); t.interrupt (); long t1 = System.currentTimeMillis(); t.join (5000); |

