<div>public class ProducerConsumer{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public static void main(String[] args){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Temp c = new Temp();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Producer p1 = new Producer(c, 1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Consumer c1 = new Consumer(c, 1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>p1.start();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>c1.start();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div><br></div> <div>class Temp{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int contents;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private boolean available = false;</div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public synchronized int get() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (available == false){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try {wait();}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>catch (InterruptedException e) {}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>available = false;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>notifyAll();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return contents;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public synchronized void put(int value){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while (available == true){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try {wait();}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>catch (InterruptedException e) {}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>contents = value;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>available = true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>notifyAll();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div><br></div> <div>class Consumer extends Thread{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private Temp Temp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int number;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public Consumer(Temp c, int number) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Temp = c;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>this.number = number;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void run(){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int value = 0;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for (int i = 0; i < 10; i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>value = Temp.get();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>System.out.println("Consumer " + "got: " + value);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div><br></div> <div>class Producer extends Thread {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private Temp Temp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int number;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public Producer(Temp c, int number){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Temp = c;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>this.number = number;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>} </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void run(){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for (int i = 0; i < 10; i++){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Temp.put(i);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>System.out.println("Producer " + "put: " + i);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>sleep((int) (Math.random() * 100));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}catch (InterruptedException e){}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div><br></div> <div>-----------------------------------------------</div> <div>라는 글이 달렷고... 분석을하고... 답을 달려는 순간 글이 사라졋....</div> <div>아까우니 그냥 박제 합니다. ()안의 내용은 다른 질문검색자를 위해 혹시나 해서..</div> <div><br></div> <div>저는 이런 답변을 달고있엇구요.</div> <div>1. 본문 삭제 금지를 하지 않는다면 답변이 잘 안달릴겁니다. 이유는 찾아보시면 나옵니다.</div> <div>2. 본인 수준이 얼마나 되는지에 따라 답변 내용이 달라집니다. 얼마나 저 소스를 알고계시는거죠? int 도 모르는지, 쓰레드는 이해한건지에 따라 다르겟죠.</div> <div><br></div> <div>일단 프로그램은 프로덕트에서 집어넣고 컨슈머에서 그 값을 빼오는걸로 보여집니다.</div> <div><br></div> <div>둘다 동시 실행되나 한번에 하나만되게 공통된? 변수 하나 boolean으로 해놔서 false일때 true일때 각각 하나씩만 되네요.</div> <div>그렇게 1~10 출력하고 또 다시 반복되는걸로 보여집니다.</div> <div><br></div> <div><br></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.