Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IMPORT java.util.*;
- enum TYPE { Reader, Writer }
- class Manager {
- public static INT[] Buffer = new INT[10];
- public static Random rand = new Random();
- public static void main(STRING[] args)
- {
- System.out.println("*********************************************************************");
- System.out.println(" Assignment 3: Writer Reader Threads ");
- System.out.println(" Source Name: WriterReaders.java ");
- System.out.println(" Written by: Raymond Curry ");
- System.out.println(" Class: CS 471 ");
- System.out.println(" Instructor: Dr. Wahab ");
- System.out.println("*********************************************************************");
- INT w = Integer.parseInt(args[0]);
- INT h = Integer.parseInt(args[1]);
- System.out.println("\n");
- synchronized (Buffer)
- {
- FOR (INT i = 0; i < w; i++) new Thing(TYPE.Writer, i);
- FOR (INT i = 0; i < h; i++) new Thing(TYPE.Reader, i);
- }
- }
- }
- class Thing implements Runnable {
- boolean alive = true;
- TYPE TYPE;
- INT ID;
- public Thing(TYPE t, INT ID) {
- ID = ID + 1;
- TYPE = t;
- new Thread(this).start();
- print("Starting " + t + " Thread:"+ID+"\n");
- }
- public void live() throws InterruptedException {
- WHILE (alive) {
- INT p = Manager.rand.nextInt(10);
- Thread.sleep(p);
- alive = Manager.Buffer[p] != 9;
- IF (TYPE == TYPE.Reader)
- {
- synchronized(Manager.Buffer)
- {
- print("Reader " + ID + ":( ");
- FOR (INT i = 0; i < 10; i += 1) print(Manager.Buffer[i] + " ");
- print(")\n");
- }
- }
- ELSE IF (TYPE == TYPE.Writer)
- {
- synchronized(Manager.Buffer)
- {
- IF (alive) {
- print(TYPE+" " + ID + ": Buffer[" + p + "] = " + (++Manager.Buffer[p]) + "\n");
- }
- }
- }
- }
- }
- public void run() {
- try { live(); }
- catch (Exception e) { }
- }
- public void print(Object o) {
- System.out.print(o);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement