aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.lang/Thread_Interrupt.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/testsuite/libjava.lang/Thread_Interrupt.java')
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
index 5412549e713..cb569c827c4 100644
--- a/libjava/testsuite/libjava.lang/Thread_Interrupt.java
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
@@ -44,12 +44,33 @@ class Sleeper extends Thread
class Looper extends Thread
{
+ // 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()
{
System.out.println ("Busy waiting");
int count = 0;
- for (int i=0; i < 1000000; i++)
+ for (long i=0; i < yields; i++)
{
Thread.yield();
count += 5;