210得票13回答
Java多线程中如何使用CountDownLatch?

我可以帮助您理解Java中的CountDownLatch是什么以及何时使用它。这个程序的工作原理并不是很清楚。据我所知,所有三个线程同时启动,每个线程都会在3000毫秒后调用CountDownLatch。因此,倒数会逐个递减。当闩锁变为零时,程序将打印“已完成”。也许我理解的方式是不正确的。 ...

180得票14回答
Java并发:倒计数锁存器vs循环屏障

我正在阅读java.util.concurrent API,发现: CountDownLatch:一种同步辅助工具,允许一个或多个线程等待,直到其他线程中执行的一组操作完成。 CyclicBarrier:一种同步辅助工具,允许一组线程都等待彼此达到公共屏障点。 对我来说,两者看...

113得票7回答
CountDownLatch与Semaphore的区别

使用java.util.concurrent.CountdownLatch相对于java.util.concurrent.Semaphore是否有优势?就我所知,以下片段几乎是等效的: 1. Semaphore final Semaphore sem = new Semaphore(0);...

36得票5回答
什么是join和CountDownLatch之间的区别?

在等待其他线程完成时,我们可以使用join或者CountdownLatch。使用这两种机制各有优缺点是什么?

30得票6回答
灵活的CountDownLatch?

我现在遇到了一个问题,生产者线程会产生N个工作项,将它们提交给ExecutorService,然后需要等待所有N个项目都被处理完才能继续执行。 注意事项: - N的数量不是提前确定的,如果已知数量,我可以创建CountDownLatch并使生产者线程await直到所有任务完成。 - 使用C...

28得票3回答
Java支持三种不同的并发模型。

我正在研究多线程环境下的不同并发模型(http://tutorials.jenkov.com/java-concurrency/concurrency-models.html)。 这篇文章重点介绍了三种并发模型: 并行工作者 第一个并发模型是我所谓的并行工作者模型。传入的作业被分配给...

22得票9回答
可重置的倒计时门闩

我需要一个与CountDownLatch直接等价但可重置的东西(仍保持线程安全!)。我不能使用传统的同步构造,因为它们在这种情况下根本不起作用(复杂的锁定问题)。目前我正在创建许多CountDownLatch对象,每个对象替换前一个对象。我认为这会在GC的年轻代中发生(由于对象数量巨大)。您可...

15得票3回答
在另一个线程中解决条件后,让一个线程睡眠。

这里有两个代码块,它们完成了(我认为的)同样的功能。 我基本上正在尝试学习如何使用Java 1.5的并发性来摆脱Thread.sleep(long)。第一个例子使用ReentrantLock,第二个例子使用CountDownLatch。我试图做的事情的要点是将一个线程置于休眠状态,直到另一个...

10得票1回答
如何使用CompletableFuture返回一个值

我创建了一个示例,想知道如何使用CompletableFuture返回值?我还将CompletableFuture<Void> exeFutureList更改为CompletableFuture<Integer> exeFutureList,但是Eclipse总是建议将...