aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/testsuite/java.lang/SyncronizedTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/testsuite/java.lang/SyncronizedTest.java')
-rw-r--r--libjava/classpath/testsuite/java.lang/SyncronizedTest.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/libjava/classpath/testsuite/java.lang/SyncronizedTest.java b/libjava/classpath/testsuite/java.lang/SyncronizedTest.java
new file mode 100644
index 0000000..61115ef
--- /dev/null
+++ b/libjava/classpath/testsuite/java.lang/SyncronizedTest.java
@@ -0,0 +1,59 @@
+public class SyncronizedTest
+ implements Runnable
+{
+ public static int count = 0;
+ String _name;
+
+ public SyncronizedTest(String name)
+ {
+ _name = name;
+ }
+
+ public void run()
+ {
+ if (_name.equals("timer")) {
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException e){}
+ System.out.println("FAILED: timer triggered");
+ System.exit(1);
+ }
+ try {
+ count++;
+
+ synchronized(this) {
+ notifyAll();
+ }
+ } catch (Exception e) {
+ System.out.println("FAILED: receiver: " + e);
+ System.exit(1);
+ }
+ }
+ public static void main(String args[])
+ {
+ try {
+ SyncronizedTest tester = new SyncronizedTest("tester");
+ Thread tester_thread = new Thread(tester);
+
+ SyncronizedTest timer = new SyncronizedTest("timer");
+ Thread timer_thread = new Thread(timer);
+ timer_thread.start();
+
+ synchronized(tester) {
+ tester_thread.start();
+ tester.wait();
+ }
+
+ if (0 == count)
+ throw new Exception("Thread did not run.");
+
+ tester_thread.join();
+
+ System.out.println("PASSED: count="+count);
+ System.exit(0);
+ } catch (Exception e) {
+ System.out.println("FAILED: " + e);
+ System.exit(1);
+ }
+ }
+}