게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
댓글을 쓰고있는데 글이 사라졋.... (쓰레드/자바)
게시물ID : programmer_9331짧은주소 복사하기
작성자 : Conoco
추천 : 1
조회수 : 358회
댓글수 : 3개
등록시간 : 2015/04/14 01:31:11
옵션
  • 본인삭제금지
public class ProducerConsumer{
public static void main(String[] args){
Temp c = new Temp();
Producer p1 = new Producer(c, 1);
Consumer c1 = new Consumer(c, 1);
p1.start();
c1.start();
}
}


class Temp{
private int contents;
private boolean available = false;


public synchronized int get() {
while (available == false){
try {wait();}
catch (InterruptedException e) {}
}
available = false;
notifyAll();
return contents;
}


public synchronized void put(int value){
while (available == true){
try {wait();}
catch (InterruptedException e) {}
}
contents = value;
available = true;
notifyAll();
}
}


class Consumer extends Thread{
private Temp Temp;
private int number;
public Consumer(Temp c, int number) {
Temp = c;
this.number = number;
}

public void run(){
int value = 0;
for (int i = 0; i < 10; i++){
value = Temp.get();
System.out.println("Consumer " + "got: " + value);
}
}
}


class Producer extends Thread {
private Temp Temp;
private int number;
public Producer(Temp c, int number){
Temp = c;
this.number = number;
public void run(){
for (int i = 0; i < 10; i++){
Temp.put(i);
System.out.println("Producer " + "put: " + i);
try{
sleep((int) (Math.random() * 100));
}catch (InterruptedException e){}
}
}
}


-----------------------------------------------
라는 글이 달렷고... 분석을하고... 답을 달려는 순간 글이 사라졋....
아까우니 그냥 박제 합니다. ()안의 내용은 다른 질문검색자를 위해 혹시나 해서..

저는 이런 답변을 달고있엇구요.
1. 본문 삭제 금지를 하지 않는다면 답변이 잘 안달릴겁니다. 이유는 찾아보시면 나옵니다.
2. 본인 수준이 얼마나 되는지에 따라 답변 내용이 달라집니다. 얼마나 저 소스를 알고계시는거죠? int 도 모르는지, 쓰레드는 이해한건지에 따라 다르겟죠.

일단 프로그램은 프로덕트에서 집어넣고 컨슈머에서 그 값을 빼오는걸로 보여집니다.

둘다 동시 실행되나 한번에 하나만되게 공통된? 변수 하나 boolean으로 해놔서 false일때 true일때 각각 하나씩만 되네요.
그렇게 1~10 출력하고 또 다시 반복되는걸로 보여집니다.



전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호