for循环中异步转同步如何改造?
代码结构描述如下:
for (int i = 0; i < 5; i++) {
new Thread(new Runnable(){}).start();
new Thread(new Runnable(){}).start();
}
for循环中的两个线程,前者是生产者,后者是消费者,他们通过定义一个:
public static BlockingQueue<Object> taskQueue = new ArrayBlockingQueue<Object>(2500);
联系起来,现在想for循环第一次执行完之后,两个线程的生产者全生产完数据,消费者全部消费完数据之后,再执行for循环的第二次循环。
在对代码结构改动最小的情况下,我考虑了callable countdownlatch,都不太合适,有没有更好的解决方案呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
改造一下试试使用java.util.concurrent.CompletionService
生产->消费->生产->消费....
这样的要求为毛要开线程
消费者全部消费完数据之后,再执行for循环的第二次循环
,那你开线程的意义在哪里?,直接同步执行不就行了