summaryrefslogtreecommitdiff
path: root/libjava/classpath/testsuite/java.lang/SyncronizedTest.java
blob: 61115efaacab52a7692f7711e02b53e02b96da64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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);
      }
    }
}