Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何停止信号量中的特定thead?_Java_Semaphore_Producer Consumer - Fatal编程技术网

在java中,如何停止信号量中的特定thead?

在java中,如何停止信号量中的特定thead?,java,semaphore,producer-consumer,Java,Semaphore,Producer Consumer,我已经用信号量实现了生产者和消费者问题。 我需要一种方式,当没有消费的产品,当前线程等待,直到 生产者生产一种产品。 请指导我。请检查,它已经支持此行为 代码取自上面链接的JavaDoc,例如: class Producer implements Runnable { private final BlockingQueue queue; Producer(BlockingQueue q) { queue = q; } public void run() {

我已经用信号量实现了生产者和消费者问题。 我需要一种方式,当没有消费的产品,当前线程等待,直到 生产者生产一种产品。 请指导我。

请检查,它已经支持此行为

代码取自上面链接的JavaDoc,例如:

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

你现在的代码是什么?没有代码,没有帮助。。。