스레드조정 자바 쓰레드조정 관련 소스 질문입니다

조회수 1013회

전체적으로 돌아가는 상황을 순서대로 좀 알려주세요!! empty true false 상태로 비유해서요!!

1.Buffer 소스

package lect12;

public class Buffer {

private int data;

private boolean empty = true;

public synchronized int get(){

while(empty){

try{

wait();

}

catch(InterruptedException e){

e.printStackTrace();

}

}

empty = true;

notifyAll();

return data;

}

public synchronized void put(int data){

while(!empty){

try{

wait();

}catch(InterruptedException e){

e.printStackTrace();

}

} empty=false;

this.data =data;

notifyAll();

}

}

2.Producer 소스

public class Producer implements Runnable{

private Buffer buffer;

public Producer(Buffer buffer){

this.buffer = buffer;

}

public void run(){

for(int i = 0; i < 10; i++){

buffer.put(i);

System.out.println("생산자: "+i+" 번 케익을 생산하였습니다!!");

try{

Thread.sleep((int)(Math.random()*100));

} catch (InterruptedException e) {

e.printStackTrace();

} } }

}

3.Consumer 소스

package lect12;

public class Consumer implements Runnable{

private Buffer buffer;

public Consumer(Buffer drop){

this.buffer = drop;

}

public void run(){

for(int i = 0; i < 10; i++){

int data = buffer.get();

System.out.println("소비자: "+data+" 번 케익을 소비하였습니다~~");

try{

Thread.sleep((int)(Math.random()*100));

} catch (InterruptedException e) {

e.printStackTrace(); } } }

}

4.ProducerConsumerTest 소스 (메인) package lect12;

public class ProducerConsumerTest {

public static void main(String[] args){

Buffer buffer = new Buffer();

Thread producer = new Thread(new Producer(buffer));

producer.start();

Thread consumer = new Thread(new Consumer(buffer));

consumer.start(); }

}

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 소스 보기가 힘드네요. 코드 블럭을 사용해보세요. 편집요청빌런 2017.6.16 09:37

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)