multithreading, 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.

Example:
Print out of what the outputs of the executing programs look like
> java ProducerConsumer
Producer: Generated 100,000 items, Cumulative value of generated items=abc.def
Consumer: Consumed 100,000 items, Cumulative value of consumed items=abc.def
Producer: Generated 200,000 items, Cumulative value of generated items=ghi.jkl
Consumer: Consumed 200,000 items, Cumulative value of consumed items=ghi.jkl
Producer: Generated 300,000 items, Cumulative value of generated items=mno.pqr
Consumer: Consumed 300,000 items, Cumulative value of consumed items=mno.pqr
Producer: Generated 400,000 items, Cumulative value of generated items=stu.vwx
Consumer: Consumed 400,000 items, Cumulative value of consumed items=stu.vwx
Producer: Generated 500,000 items, Cumulative value of generated items=yza.bcd
Consumer: Consumed 500,000 items, Cumulative value of consumed items=yza.bcd
Producer: Generated 600,000 items, Cumulative value of generated items=efg.hij
Consumer: Consumed 600,000 items, Cumulative value of consumed items=efg.hij
Producer: Generated 700,000 items, Cumulative value of generated items=klm.nop
Consumer: Consumed 700,000 items, Cumulative value of consumed items=klm.nop
Producer: Generated 800,000 items, Cumulative value of generated items=qrs.tuv
Consumer: Consumed 800,000 items, Cumulative value of consumed items=qrs.tuv
Producer: Generated 900,000 items, Cumulative value of generated items=wxy.zab
Consumer: Consumed 900,000 items, Cumulative value of consumed items=wxy.zab
Producer: Generated 1,000,000 items, Cumulative value of generated items=cde.fgh
Consumer: Consumed 1,000,000 items, Cumulative value of consumed items=cde.fgh
Producer: Finished generating 1,000,000 items
Consumer: Finished consuming 1,000,000 item
Exiting …


Related Discussions:- multithreading

Url instance and url connection instance, Difference between URL instance a...

Difference between URL instance and URL Connection instance? Ans) A URL instance shows the location of a resource, and a URL Connection instance shows a link for accessing or co

Methods in java, public class Foothill {    public static void main(String[...

public class Foothill {    public static void main(String[] args)    {       Client person_1 = new Client("Bruce Ruprecht", 16000, 10);       Writer writer_1 = new Writer("Adam Buf

Describe the four levels of access protection, Describe the Four Levels of ...

Describe the Four Levels of Access Protection ? Any two various Java objects have one of four relations to each other. The four relations are: • The objects are in the simila

Explain java.lang.string library in java, Explain java.lang.string library ...

Explain java.lang.string library in java? Strings are objects. Specifically they're instances of the class java.lang.String . This class has several methods which are useful f

I need social mobile application, Project Description: I'm using a php s...

Project Description: I'm using a php script called phpfox on my site its work as social network . So I need is to use this script as CMS for my application. What users wil

Minimum Passing Credential, Alia is appearing for the board exams. In order...

Alia is appearing for the board exams. In order to qualify for the next class Alia need to get exactly X credits. In current semester Alia has to study N number of subjects, and ev

#titleArray to store 10messages of type String.., AskWrite an application t...

AskWrite an application that uses an Array to store 10messages of type String. You will store this Array with 10 messages of your choosing. For example, a message could be “I love

Demonstrate java client and server , There is no separate homework this wee...

There is no separate homework this week, but you may complete the exercises ahead of time, in which case you only need to attend for long enough to get your work marked off by your

Differentiate between onload and onunload, Differentiate between onLoad and...

Differentiate between onLoad and onUnload? Onload executes the particular javascript code when a latest document is loaded into a windows. ONUnload executes he particular javas

La food, The fancy new French restaurant La Food is very popular for its au...

The fancy new French restaurant La Food is very popular for its authentic cuisine and high prices. This restaurant does not take reservations. To help improve the efficiency of the

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