본문 바로가기

개발하자/JSP&Servlet

생산소비패턴2

 

 

import java.util.*;
class Producer extends Thread{
 Resource source;
 public Producer(String n, Resource s){
 super(n);
 source=s;
 }
 public void run(){
 for(char ch='A'; ch<'J'; ch++){
 System.out.println(getName()+"가 제품["+ch+"]를 생산했다.");
source.put(ch);
 }
 }

}
class Consumer extends Thread{
 Resource source;
 public Consumer(String n, Resource s){
 super(n);
 source=s;
 }
 public void run(){
 char getch=' ';
 for(char ch='A'; ch<'J'; ch++){
 getch=source.get();
 System.out.println(getName()+"가 제품["+getch+"]를 소비했다.");
 }
 }
}
class Resource{
 Vector<Character> vec;
 static Producer p;
 static Consumer c;
 public Resource(){
 vec=new Vector<Character>();
 }
 public void put(char ch){
 while(vec.size()==3){
 try{
 Thread.sleep(5000);
 }catch(InterruptedException e){}
 }
 vec.add(ch);
 System.out.println("창고에 제품["+ch+"]가 들어왔다. 재고수량:"+vec.size());
 c.interrupt();
 }
 public char get(){
 while(vec.size()==0){
 try{Thread.sleep(5000);}catch(InterruptedException e){}
 }
 Character ch=vec.remove(0);
 System.out.println("창고에 제품["+ch+"]가 나갔다. 재고수량:"+vec.size());
 p.interrupt();
 return ch.charValue();
 }
 public static void main(String args[]){
 Resource r=new Resource();
 p=new Producer("생산자",r);
 c=new Consumer("소비자",r);
 p.start(); c.start();
 }
}

 

 

 

 

'개발하자 > JSP&Servlet' 카테고리의 다른 글

formData 사용하기  (1) 2019.03.27
synchronized  (0) 2015.03.31
전달할값이 많을때 tag  (0) 2015.03.31
taglib,forEach사용해서 구구단출력  (0) 2015.03.31
태그만들어 사용하기 예제  (0) 2015.03.31