我的代码片段:
public class ProducerConsumerTest {
public static void main(String[] args)
{
ArrayBlockingQueue<String> sharedQueue = new ArrayBlockingQueue<String>(20, true);
ExecutorService consumerService = Executors.newFixedThreadPool(5);
ExecutorService producerService = Executors.newSingleThreadExecutor();
Future future=producerService.submit(new Producer(sharedQueue));
consumerService.execute(new Consumer(sharedQueue));
consumerService.execute(new Consumer(sharedQueue));
consumerService.execute(new Consumer(sharedQueue));
consumerService.execute(new Consumer(sharedQueue));
consumerService.execute(new Consumer(sharedQueue));
}
}
如何让主线程等待其他线程?
我面临的问题是我不知道 ExecutorService
创建的线程的名称,这就是为什么我不能使用 join()
。例如:t1.join()
在main()
.
最佳答案
为什么不尝试设置障碍呢?
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CyclicBarrier.html
PS。我认为它们可以在 JAVA7 及更高版本上运行关于java - 生产者消费者主线程退出,而其他线程正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27122300/