1 package gov.nasa.jpf.mc; 2 21 27 public class oldclassic { 28 public static void main (String [] args) { 29 Event new_event1 = new Event(); 30 Event new_event2 = new Event(); 31 32 FirstTask task1 = new FirstTask(new_event1, new_event2); 33 SecondTask task2 = new SecondTask(new_event1, new_event2); 34 35 task1.start(); 36 task2.start(); 37 } 38 } 39 40 43 class Event { 44 int count = 0; 45 46 public synchronized void signal_event () { 47 count = (count + 1) % 3; 48 notifyAll(); 49 } 50 51 public synchronized void wait_for_event () { 52 try { 53 wait(); 54 } catch (InterruptedException e) { 55 } 56 57 ; 58 } 59 } 60 61 64 class FirstTask extends java.lang.Thread { 65 Event event1; 66 Event event2; 67 int count = 0; 68 69 public FirstTask (Event e1, Event e2) { 70 this.event1 = e1; 71 this.event2 = e2; 72 } 73 74 public void run () { 75 count = event1.count; 76 77 while (true) { 78 if (count == event1.count) { 79 assert (count == event1.count); 80 event1.wait_for_event(); 81 } 82 count = event1.count; 83 event2.signal_event(); 84 } 85 } 86 } 87 88 91 class SecondTask extends java.lang.Thread { 92 Event event1; 93 Event event2; 94 int count = 0; 95 96 public SecondTask (Event e1, Event e2) { 97 this.event1 = e1; 98 this.event2 = e2; 99 } 100 101 public void run () { 102 count = event2.count; 103 104 while (true) { 105 event1.signal_event(); 106 if (count == event2.count) { 107 assert (count == event2.count); 108 event2.wait_for_event(); 109 } 110 count = event2.count; 111 } 112 } 113 } | Popular Tags |