Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

server java file. _________________________________ public class Server { public static void main(String args[]) { BoundedBuffer server = new BoundedBuffer(); // now create the producer and

image text in transcribedserver java file. _________________________________

public class Server

{

public static void main(String args[]) {

BoundedBuffer server = new BoundedBuffer();

// now create the producer and consumer threads

Producer producerThread = new Producer(server);

Consumer consumerThread = new Consumer(server);

producerThread.start();

consumerThread.start();

}//main

}//class

_____________________ producer file.java

import java.util.*;

public class Producer extends Thread

{

public Producer(BoundedBuffer b) {

buffer = b;

}

public void run()

{

Date message;

while (true)

{

int sleeptime = (int) (BoundedBuffer.NAP_TIME * Math.random()) +1;

System.out.println("Producer sleeping for " + sleeptime + " seconds");

try { sleep(sleeptime*1000); }

catch(InterruptedException e) {}

// produce an item & enter it into the buffer

message = new Date();

System.out.println("Producer produced " + message);

buffer.enter(message);

}

}

private BoundedBuffer buffer;

} _______________________ consumer file.java

import java.util.*;

public class Consumer extends Thread

{

public Consumer(BoundedBuffer b)

{

buffer = b;

}

public void run()

{

Date message;

while (true)

{

int sleeptime = (int) (BoundedBuffer.NAP_TIME * Math.random()) +1;

System.out.println("Consumer sleeping for " + sleeptime + " seconds");

try { sleep(sleeptime*1000); }

catch(InterruptedException e) {}

// consume an item from the buffer

System.out.println("Consumer wants to consume.");

message = (Date)buffer.remove();

System.out.println("Consumer consumed."+message);

}

}

private BoundedBuffer buffer;

} ___________________________ bounded buffer.java

import java.util.*;

public class BoundedBuffer

{

public BoundedBuffer()

{

// buffer is initially empty

count = 0;

in = 0;

out = 0;

buffer = new Object[BUFFER_SIZE];

}

// producer calls this method

public void enter(Object item) {

while (count == BUFFER_SIZE)

; // do nothing

// add an item to the buffer

++count;

buffer[in] = item;

in = (in + 1) % BUFFER_SIZE;

if (count == BUFFER_SIZE)

System.out.println(" Buffer FULL");

}

// consumer calls this method

public Object remove() {

Object item;

while (count == 0)

; // do nothing

// remove an item from the buffer

--count;

item = buffer[out];

out = (out + 1) % BUFFER_SIZE;

if (count == 0)

System.out.println(" Buffer EMPTY");

return item;

}

public static final int NAP_TIME = 2;

private static final int BUFFER_SIZE = 5;

private volatile int count;

private int in; // points to the next free position in the buffer

private int out; // points to the next full position in the buffer

private Object[] buffer;

}

Consider the shared memory version of the producer/consumer problem. Your task in this assignment is to create a multithreaded program to do the following: the Server class should create two producer threads identified as John and Liz"; it should create two consumer threads identified as Mary and Bert; John & Mary share a buffer; Liz & Bert share a different buffer. A producer thread repeats the following steps forever: Sleep for a random amount of time in the range 3 to 7 seconds) and then generate a non-negative random integer value in the range 8000...50000; then insert this value into the buffer. The corresponding consumer thread repeats the following steps forever: sleep for a random amount of time (in the range 4 to 6 seconds) and then remove a value from the buffer; determine the sum of digits in this value; output both the value & its sum of digits onto the screen. Thus, in your producer/consumer problem, whatever John produces Mary consumes & whatever Liz produces Bert consumes. For your convenience, I have provided you the solution given by the authors of our textbook for the producer/consumer problem based on shared buffer that you may edit/modify to do this assignment. (See the folder PG1xxx). Note that this folder includes the following files: Server.java, Producer.java, Consumer.java, & BoundedBuffer.java. You will rename the folder PG1xxx replacing xxx with your initials. Each file must include your name, course info, assignment #, date, and a brief description of the task done in that file. NOTE: 1. Your Java source files should be well-commented & well-structured 2. You must include your name, current date, & a description of the problem as comments 3. Electronic copy of the folder PGlxxx (zipped) must be posted by due date time to the appropriate location on Canvas. Post only the .zip type file. 4. You need to turn in a hardcopy of the source files (Server.java, Producer.java, BoundedBuffer.java, and Consumer.java) by the due date time Consider the shared memory version of the producer/consumer problem. Your task in this assignment is to create a multithreaded program to do the following: the Server class should create two producer threads identified as John and Liz"; it should create two consumer threads identified as Mary and Bert; John & Mary share a buffer; Liz & Bert share a different buffer. A producer thread repeats the following steps forever: Sleep for a random amount of time in the range 3 to 7 seconds) and then generate a non-negative random integer value in the range 8000...50000; then insert this value into the buffer. The corresponding consumer thread repeats the following steps forever: sleep for a random amount of time (in the range 4 to 6 seconds) and then remove a value from the buffer; determine the sum of digits in this value; output both the value & its sum of digits onto the screen. Thus, in your producer/consumer problem, whatever John produces Mary consumes & whatever Liz produces Bert consumes. For your convenience, I have provided you the solution given by the authors of our textbook for the producer/consumer problem based on shared buffer that you may edit/modify to do this assignment. (See the folder PG1xxx). Note that this folder includes the following files: Server.java, Producer.java, Consumer.java, & BoundedBuffer.java. You will rename the folder PG1xxx replacing xxx with your initials. Each file must include your name, course info, assignment #, date, and a brief description of the task done in that file. NOTE: 1. Your Java source files should be well-commented & well-structured 2. You must include your name, current date, & a description of the problem as comments 3. Electronic copy of the folder PGlxxx (zipped) must be posted by due date time to the appropriate location on Canvas. Post only the .zip type file. 4. You need to turn in a hardcopy of the source files (Server.java, Producer.java, BoundedBuffer.java, and Consumer.java) by the due date time

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Relational Database And SQL

Authors: Lucy Scott

3rd Edition

1087899699, 978-1087899695

More Books

Students also viewed these Databases questions

Question

Are my points each supported by at least two subpoints?

Answered: 1 week ago