package thread;
/**
*
16.采用Java 多线程技术,设计实现一个符合生产者和消费者问题的程序。
对一个对象(枪膛)进行操作,其最大容量是12颗子弹。
生产者线程是一个压入线程,它不断向枪膛中压入子弹;消费者线程是一个射出线程,
它不断从枪膛中射出子弹。(30分)
要求:
(1)给出分析过程说明。(10分)
(2)程序输出,要模拟体现对枪膛的压入和射出操作;(10)
(2)设计程序时应考虑到两个线程的同步问题。(10)
@since 2010-9-20
@start 9:
@end 9:21
* */
public class Sixteen_Bullets {
public static void main(String[] args){
Bullets bullerts=new Bullets();
bullerts.init();
bullerts.start();
}
}
class Bullets{
Thread productor=null;
Thread customer=null;
int now=0;
public void init(){
productor=new Thread(){
public synchronized void produce(){
if(now<12){
System.out.println("push one bullet");
now++;
System.out.println("the count:`"+now);
}
else{
customer.interrupt();
}
}
public void run(){
while(true){
produce();
}
}
};
customer=new Thread(){
public synchronized void shoot(){
if(now>0){
System.out.println(" shoot one bullet");
now--;
System.out.println(" the counts :`"+now);
}
else{
productor.interrupt();
}
}
public void run(){
while(true){
shoot();
}
}
};
}
public void start(){
customer.start();
productor.start();
}
}