Thread_Wait.java: New file.
2000-03-23 Bryce McKinlay <bryce@albatross.co.nz> * libjava.lang/Thread_Wait.java: New file. * libjava.lang/Thread_Sleep.java: New file. * libjava.lang/Thread_Monitor.java: New file. * libjava.lang/Thread_Wait.out: New file. * libjava.lang/Thread_Sleep.out: New file. * libjava.lang/Thread_Monitor.out: New file. * libjava.lang/Thread_Interrupt.java: New file. * libjava.lang/Thread_Wait_2.java: New file. * libjava.lang/Thread_Wait_2.out: New file. * libjava.lang/Thread_Wait_Interrupt.java: New file. * libjava.lang/Thread_Wait_Interrupt.out: New file. * libjava.lang/Thread_Interrupt.out: New file. * libjava.lang/Thread_Join.java: New file. * libjava.lang/Thread_Join.out: New file. * libjava.lang/Thread_Alive.java: New file. * libjava.lang/Thread_Alive.out: New file. From-SVN: r32706
This commit is contained in:
parent
8034da37ce
commit
e8904f655d
17 changed files with 683 additions and 0 deletions
76
libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
Normal file
76
libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
Normal file
|
@ -0,0 +1,76 @@
|
|||
// Create two threads waiting on a monitor. Interrupt one of them. Does the
|
||||
// other wake up correctly?
|
||||
// Origin: Bryce McKinlay <bryce@albatross.co.nz>
|
||||
|
||||
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)
|
||||
{
|
||||
System.out.println ("Thread waiting.");
|
||||
try
|
||||
{
|
||||
long start = System.currentTimeMillis();
|
||||
monitor.wait(1000);
|
||||
long time = System.currentTimeMillis() - start;
|
||||
if (time > 990)
|
||||
System.out.println ("Error: wait on thread " + thread_num
|
||||
+ " timed out.");
|
||||
else
|
||||
notified = true;
|
||||
}
|
||||
catch (InterruptedException x)
|
||||
{
|
||||
interrupted = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class Thread_Wait_Interrupt
|
||||
{
|
||||
public static void main(String args[])
|
||||
{
|
||||
Object monitor = new Object();
|
||||
Waiter w1 = new Waiter(monitor, 1);
|
||||
Waiter w2 = new Waiter(monitor, 2);
|
||||
w1.start();
|
||||
w2.start();
|
||||
try
|
||||
{
|
||||
Thread.sleep(250);
|
||||
|
||||
synchronized (monitor)
|
||||
{
|
||||
w1.interrupt();
|
||||
monitor.notify();
|
||||
}
|
||||
|
||||
w1.join();
|
||||
w2.join();
|
||||
System.out.println("join ok");
|
||||
System.out.println("Thread 1 " +
|
||||
(w1.interrupted ? "interrupted ok" : "error"));
|
||||
System.out.println("Thread 2 " +
|
||||
(w2.notified ? "notified ok" : "error"));
|
||||
|
||||
}
|
||||
catch (InterruptedException x)
|
||||
{
|
||||
System.out.println (x);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue