1 31 package org.objectweb.proactive.examples.readers; 32 33 public class Reader implements org.objectweb.proactive.RunActive { 34 35 private ReaderDisplay display; 36 private ReaderWriter rw; 37 private boolean done; 38 private boolean autopilot; 39 private boolean reading; 40 private int id; 41 42 43 46 public Reader() { 47 } 48 49 50 53 public Reader(ReaderDisplay display, ReaderWriter rw, int id) { 54 this.display = display; 55 this.rw = rw; 56 this.id = id; 57 done = false; 58 autopilot = true; 59 reading = false; 60 } 61 62 63 public void stopIt() { 64 done = true; 65 } 66 67 68 private void startRead() { 69 reading = true; 70 display.setWait(id, true); 71 rw.startRead(); 72 display.setRead(id, true); 73 } 74 75 76 private void endRead() { 77 reading = false; 78 rw.endRead(); 79 display.setRead(id, false); 80 } 81 82 83 87 public void runActivity(org.objectweb.proactive.Body body) { 88 org.objectweb.proactive.Service service = new org.objectweb.proactive.Service(body); 89 while (!done) { 90 service.serveOldest(); 91 if (reading) 93 endRead(); 94 else startRead(); 95 try { 96 Thread.sleep((long)700 + (long)(Math.random() * 1500)); 97 } catch (InterruptedException e) { 98 } 99 } 100 } 101 } 102 | Popular Tags |