本帖最后由 david8501 于 2010-07-10 22:06:51 编辑

解决方案 »

  1.   

    以前在一本介绍Java设计模式的书上看到过并发模式,有一章专门讲Java并发模式
      

  2.   

    现在做一个中介,中介从服务器接收一条消息,然后将这一条消息转发给其他多个客户端,其中接收服务器消息是一个线程,针对每一个客户端有一个线程,怎么做一个这样的单生产者,多消费者模式的东西?这个和文字聊天室程序(服务器-多客户端)类似一个客户端讲话,服务器接受转发其他所有客户端你的中介实际上是CS的Server你提的服务器只是中介服务的数据来源
      

  3.   

    我觉得生产者/消费者模式和楼主所描述的需求有点差异吧=。=那个中介只要有集合存储所有连上Server的客户端就可以实现分发了吧
      

  4.   

    以下是基于典型的生产者-使用者场景的一个用例。注意,BlockingQueue 可以安全地与多个生产者和多个使用者一起使用。  class Producer implements Runnable {
       private final BlockingQueue queue;
       Producer(BlockingQueue q) { queue = q; }
       public void run() {
         try {
           while(true) { queue.put(produce()); }
         } catch (InterruptedException ex) { ... handle ...}
       }
       Object produce() { ... }
     } class Consumer implements Runnable {
       private final BlockingQueue queue;
       Consumer(BlockingQueue q) { queue = q; }
       public void run() {
         try {
           while(true) { consume(queue.take()); }
         } catch (InterruptedException ex) { ... handle ...}
       }
       void consume(Object x) { ... }
     } class Setup {
       void main() {
         BlockingQueue q = new SomeQueueImplementation();
         Producer p = new Producer(q);
         Consumer c1 = new Consumer(q);
         Consumer c2 = new Consumer(q);
         new Thread(p).start();
         new Thread(c1).start();
         new Thread(c2).start();
       }
     }