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(); } }