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