title: Java Threads producer-consumer shared buffer
body: <p>Implement producer consumer problem using threads in Java. Producers and consumers share a buffer, producers put elements in buffer and consumers consume elements from the shared buffer. If the buffer is full producers should wait till consumers take out elements, similarly consumers should wait till producers put elements if the buffer is empty.
  Your program should accept the following inputs:</p>
  
  <pre><code>m: the number of producer threads
  n: the number of consumer threads
  k: the size of the bounded buffer
  </code></pre>
  
  <p>Your code should prompt for the above inputs in that order. You can assume that a valid integer is provided by the user for each of these. You will need to spawn m Producer threads and n Consumer threads. Each producer generates 20 integers ranging between 0 and 9 and puts them in the buffer. After putting a number in the buffer, it prints its id along with the generated number. The producer sleeps for a random amount of time before repeating the number generating cycle again. Each consumer takes a number from the buffer then prints its id along with the value it got. Then, it sleeps for a random amount of time before reading from the buffer again.
  A sample output of the program is:</p>
  
  <pre><code>Producer #2 put: 1
  Producer #1 put: 4
  Consumer #3 got: 1
  Producer #1 put: 3
  Consumer #3 got: 4
  Consumer #3 got: 3
  ...
  </code></pre>
  
  <p>i have this problem. it is clear that the <strong>array of buffer</strong> is a global variable for two method because of that array is shared with Producer &amp; Consumer. so? Unfortunately i have no idea how to do this project. anybody have an idea?</p>