Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

How can I convert this puedocode to an actual Java program. This is code for rea

ID: 3715187 • Letter: H

Question

How can I convert this puedocode to an actual Java program. This is code for readers/writers solution using semaphores (operating systems).

Puedocode:

/Readers Solution
int readcount;
semaphore x = 1, wsem = 1;
void reader() {
while (true) {
semWait (x);
readcount++;
if(readcount == 1)
semWait (wsem);
semSignal (x);
READUNIT();
semWait (x);
readcount--;
if(readcount == 0)
semSignal (wsem);
semSignal (x);
}
}
void writer() {
while (true) {
semWait (wsem);
WRITEUNIT();
semSignal (wsem);
}
}
void main() {
readcount = 0;
parbegin (reader, writer);
}

//Wiriters solution using Semaphore
int readcount,writecount; semaphore x = 1, y = 1, wsem = 1, rsem = 1;
void reader() {
while (true) {
semWait (z);
semWait (rsem);
semWait (x);
readcount++;
if (readcount == 1)
semWait (wsem);
semSignal (x);
semSignal (rsem);
semSignal (z);
READUNIT();
semWait (x);
readcount--;
if (readcount == 0) semSIgnal (wsem);
}
}
void writer () {
while (true) {
semWait (y);
writecount++;
if (writecount == 1)
semWait (rsem);
semSignal (y);
semWait (wsem);
semWait (y);
writecount--;
if (writecount == 0) semSignal (rsem);
semSignal (y);
}
}
void main() {
readcount = writecount = 0;
parbegin (reader, writer);
}

Explanation / Answer

import java.util.Random; import java.util.concurrent.Semaphore; import java.util.logging.Level; import java.util.logging.Logger; public class ThreadSync {     private static ThreadSync thrdsync;     private static Thread t1, t2, t3, t4, t5;     private static final Random rand = new Random();     private static Semaphore sm = new Semaphore(2, true);     String text = "lets start study on chegg";     private void busy() {         try {             Thread.sleep(rand.nextInt(1000) + 1000);         } catch (InterruptedException e) {       }     }     void write(String sentence) {         System.out.println(Thread.currentThread().getName() + " started to WRITE");         text += " " + sentence;         System.out.println(text);         System.out.println("end of the study ");         System.out.println(Thread.currentThread().getName() + " finished WRITING");     }     void read() {         System.out.println(" " + Thread.currentThread().getName() + " started to READ");         System.out.println(text);         System.out.println("End of Book ");     }     private class Writer implements Runnable {         ThreadSync ts;         Writer(String name, ThreadSync ts) {             super();             this.ts = ts;         }         public void run() {             while (true) {                 try {                     sm.acquire();                 } catch (InterruptedException ex) {                     Logger.getLogger(ThreadSync.class.getName()).log(Level.SEVERE, null, ex);                 }                 String new_sentence = new String(" new topic to study");                 busy();                 ts.write(new_sentence);                 sm.release();             } // of while         }     }     private class Reader implements Runnable {         ThreadSync ts;         Reader(String name, ThreadSync ts) {             super();             this.ts = ts;         }         public void run() {             while (true) {                 try {                     sm.acquire();                 } catch (InterruptedException ex) {                     Logger.getLogger(ThreadSync.class.getName()).log(Level.SEVERE, null, ex);                 }                 //System.out.print(t);                 busy();                 ts.read();                 sm.release();             } // of while         }     }     public void startThreads() {         ThreadSync ts = new ThreadSync();         t1 = new Thread(new Writer("Writer # 1", ts));         t2 = new Thread(new Reader("Reader # 1", ts));         //t3 = new Thread(new Reader("Writer # 2", ts));         t4 = new Thread(new Reader("Reader # 2", ts));         //t5 = new Thread(new Reader("Reader # 3", ts));         t1.start();         t2.start();         t4.start();         //t3.start();         //t4.start();         //t5.start();     }     public static void main(             String[] args) {         thrdsync = new ThreadSync();         System.out.println("Lets begin... ");         thrdsync.startThreads();     } }

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote