summaryrefslogtreecommitdiffstats
path: root/libjava/testsuite/libjava.lang/Thread_Interrupt.java
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-28 02:44:06 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-28 02:44:06 +0000
commit713eba072c5903a401778afb174de08cbd11a77d (patch)
tree06674ef80e2e86692b58726dc0403136307bc01b /libjava/testsuite/libjava.lang/Thread_Interrupt.java
parentff6fba0d15eea6dfb7ffd13b42f293a7430b7661 (diff)
downloadppe42-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.java63
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);
OpenPOWER on IntegriCloud