Program for solving the producer consumer problem, JAVA Programming

Assignment Help:

For this assignment we will be solving the producer-consumer problem with a bounded buffer. You are required to implement this assignment in Java. There are three components in this assignment.

(1) The Bounded Buffer: This buffer can hold a fixed number of items. The number of elements in this buffer is limited to 1000. This buffer needs to be a first-in first-out (FIFO) buffer. You should implement this as a Circular Buffer that satisfies the FIFO property and is restricted to hold at most 1000 items at a time. 

(2) Producer: The producer is responsible for producing data items to be added to the buffer. If the buffer is full, the producer must wait for the consumer to consume at least one item before it can add a new item to the buffer. The producer is required to produce a total of 1,000,000 items. The item that the producer adds to the buffer is a random Double that is generated using java.util.Random.

    Random random = new Random();

    Double bufferElement = random.nextDouble() * 100.0;

(3) Consumer:

The consumer is responsible for consuming elements from the buffer. If the buffer is empty the consumer must wait for the producer to add an item to the buffer. The consumer is required to consume all elements (1,000,000) generated by the producer.

There should be exactly one instance of the buffer, producer, and consumer. The producer and consumer must reference the same buffer. You can only use wait () and notify()  as the  primitives to synchronize access to the buffer.

 Correctness:

To verify the correctness of your program both the producer and consumer are required to maintain running totals of the values of the items added-to/removed-from the buffer. This would be maintained in a variable bufferValueCounter. 

Since the buffer is a FIFO buffer, the value reported for the two items below should be the same:

(a) The first N elements generated by the producer

(b) The first N elements consumed by the consumer 

Requirements of Task

1) Implement the FIFO Circular Buffer and ensure that the buffer can hold a maximum of 1000 items at a time.

2) Consumer should wait if there are no items in the buffer

3) Producer should wait if the buffer is full

4) Ensure that the producer can produce 1,000,000 items and the consumer can consume 1,000,000, items with a bounder buffer that can hold at most 1000 items at a time.

a. You should not run out of memory. Remember, your producer should not produce if the buffer is full. You should not set the size of the Java VM in your makefile or expect that the JVM will be set to a certain value.

b. Your solution must satisfy the correctness constraint i.e. you consume each item exactly once, in the order that it was produced, and demonstrate this by printing out the value of your counter (at both the producer and consumer) every time you have produced or consumed 100,000 elements. See the example output below; note how the counter values match at the producer and consumer for the same N.

c. There should be no deadlock. Your program will be executed 5 times, and it should run to completion every time without a deadlock.


Related Discussions:- Program for solving the producer consumer problem

Conditional statements in javascript, Very frequently when you write code, ...

Very frequently when you write code, you desire to perform distinct actions for different decisions. You can employ conditional statements in your code to do this. In JavaScript

What is an applets, What is an Applets? Applets: These are small java...

What is an Applets? Applets: These are small java programs. They can send from one to another computer over internet by using Applet Viewer which supports java. Applets

Convert encrypted hsql database into csv format, Project Description: We...

Project Description: We have an encrypted HSQL Database which we need to convert into CSV format. HSQL DB . We have java application jar file which reads that database but no

Explain labeled loops in details, Explain Labeled Loops in details ? Ge...

Explain Labeled Loops in details ? Generally inside nested loops break and continue exit the innermost enclosing loop. For instance consider the subsequent loops. for (int i=1

How many kinds of errors can be found during a program, How many kinds of e...

How many kinds of errors can be found during a program development? List them. 1. Syntax errors 2. Semantic errors 3. Run-time errors

Java, 1. Which of the following are not valid Java identifiers, and why? (...

1. Which of the following are not valid Java identifiers, and why? (a) wolVes (b) United(there is only one) (c) 87 (d) 5 3 (e) Real ale (f) isFound?by 2. A class Television

USES OF JAVA PROGRAMMING, WHY WE USE JAVA IN PROGRAMMING INSTEAD OF OTHER P...

WHY WE USE JAVA IN PROGRAMMING INSTEAD OF OTHER PROGRAMMING LANGUAGE

Develope a simple polling web application, Develop a simple polling (voting...

Develop a simple polling (voting) web application according to the following specifications: Initially a page should be presented to the user where he can enter his/her name

Message "the quick brown fox jumps over the lazy dog"., public class Concat...

public class ConcatDemo { public static void main(String[] args) { String animal1 = "quick brown fox"; String animal2 = "lazy dog"; String article = "the";

Explain data entry issues, Explain data entry issues? DATA ENTRY: The...

Explain data entry issues? DATA ENTRY: There is new data entered every day. New customers are added every day. Some of the data entry needs the manual entry within computer s

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd