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 |