gcc/libjava/classpath/testsuite/java.lang/JoinTest.java
Tom Tromey f911ba985a Initial revision
From-SVN: r102074
2005-07-16 00:30:23 +00:00

77 lines
1.6 KiB
Java

public class JoinTest
implements Runnable
{
public static int count = 0;
void send()
throws Exception
{
Thread.sleep(2000);
System.out.println("PASSED: Sender completed");
}
void receive()
throws Exception
{
synchronized(this) {
notifyAll();
}
Thread.sleep(5000);
count++;
System.out.println("PASSED: Receiver completed");
}
public void run()
{
String name = Thread.currentThread().getName();
if (name.equals("timer")) {
try {
Thread.sleep(10000);
} catch (InterruptedException e){}
System.out.println("FAILED: timer triggered");
System.exit(1);
}
try {
receive();
} catch (Exception e) {
System.out.println("FAILED: receiver: " + e);
System.exit(1);
}
}
public static void main(String args[])
{
try {
JoinTest sender =
new JoinTest();
JoinTest receiver =
new JoinTest();
Thread receiver_thread = new Thread(receiver);
/* Make sure the test terminates even if it hangs on network */
JoinTest timer = new JoinTest();
Thread timer_thread = new Thread(timer, "timer");
timer_thread.start();
synchronized(receiver) {
receiver_thread.start();
receiver.wait();
}
try {
sender.send();
} catch (Exception e) {
System.out.println("FAILED: sender: " + e);
System.exit(1);
}
receiver_thread.join();
if (0 == count)
throw new Exception("Nothing received");
System.out.println("PASSED: Join send/receive count="+count);
System.exit(0);
} catch (Exception e) {
System.out.println("FAILED: " + e);
System.exit(1);
}
}
}