countdownlatch相关内容

让一个线程进入休眠状态,直到另一个线程解决了某个条件

这里有两段代码完成(我认为是)同样的事情. 我基本上是在尝试学习如何使用 Java 1.5 的并发来摆脱 Thread.sleep(long).第一个示例使用 ReentrantLock,第二个示例使用 CountDownLatch.我想要做的主要是让一个线程进入睡眠状态,直到另一个线程解决了一个条件. ReentrantLock 为我用来决定是否唤醒另一个线程的布尔值提供一个锁,然后 ..

灵活的倒计时闩锁?

我现在遇到过两次问题,生产者线程生成 N 个工作项,将它们提交给 ExecutorService,然后需要等到所有 N 个项目都处理完毕. 注意事项 N 事先未知.如果是这样,我会简单地创建一个 CountDownLatch 然后让生产者线程 await() 直到所有工作完成. 使用 CompletionService 是不合适的,因为虽然我的生产者线程需要阻塞(即通过调用 take ..
发布时间:2021-12-28 22:54:19 Java开发

Java 并发:倒计时闩锁与循环屏障

我正在阅读 java.util.concurrent API,发现 CountDownLatch:一种同步辅助工具,允许一个或多个线程等待其他线程中正在执行的一组操作完成. CyclicBarrier:一种同步辅助工具,它允许一组线程相互等待,以达到共同的障碍点. 对我来说两者似乎是平等的,但我相信还有更多. 例如,在CountdownLatch 中,倒计时值无法重置,这在Cy ..
发布时间:2021-12-28 22:40:30 Java开发

如何等待一个线程产生它自己的线程?

我正在尝试测试一种在单独线程中工作的方法,简化如下: public void methodToTest(){线程线程 = 新线程(){@覆盖公共无效运行(){克拉兹.i = 2;}};线程开始();} 在我的单元测试中,我想测试 Clazz.i == 2,但我不能这样做,因为我认为断言是在线程更改值之前运行的.本来想用别的线程测试一下,然后用join等待,还是不行. SSCCE: @T ..
发布时间:2021-12-24 22:42:44 Java开发

Java 多线程中如何使用 CountDownLatch?

有人可以帮助我了解 Java CountDownLatch 是什么以及何时使用它吗? 我对这个程序的工作原理不是很清楚.据我了解,所有三个线程同时启动,每个线程将在 3000 毫秒后调用 CountDownLatch.所以倒计时会一一递减.闩锁为零后,程序会打印“已完成".可能我理解的方式不对. import java.util.concurrent.CountDownLatch;导入 j ..
发布时间:2021-11-25 20:16:44 Java开发

正确实施乒乓游戏

我在一项作业中被要求实施10次正确的乒乓球游戏,该游戏正确地调用了"ping"和"pong"(意思是在ping之前没有pong).意思是,控制台中的最终输出应该是:"ping!(1)","pong!(1)","ping!(2)","pong!(2)"等. 需求是使用信号量,reetrantlock和倒数锁存器实现gamepingpongthread. 我的问题是打印顺序并非总是按要求进 ..
发布时间:2021-04-23 20:38:21 Java开发

我可以使用CountDownLatch控制线程执行的顺序吗?

我有任务要做.我必须创建4个服务A,B,C和D.每个服务应具有自己的线程.服务应仅在其依赖的所有服务启动并启动后才能启动 服务应仅在依赖于该服务的所有服务都停止后才停止.服务应尽可能并行启动和停止. 服务B和C取决于服务A 服务D取决于服务B 要启动服务D,需要启动服务A和B 要停止服务A,必须先停止服务B,D和C A启动后,可以立即并行启动服务B和C.相反,它们可以并行停止. 您对如何解决 ..
发布时间:2020-05-14 01:14:35 Java开发

CountDownLatch是否受到虚假唤醒的影响?

诸如等待/通知和锁定/条件之类的并发管理机制似乎受到虚假唤醒的影响.开发人员通过重新检查条件确实已发生变化来迎合那些意外的唤醒. 当涉及到CountDownLatch时,虚假唤醒是否是一个问题? 解决方案 如果当前计数大于零,则当前线程 出于线程调度目的而被禁用,并且处于休眠状态,直到 发生两件事之一: 由于调用countDown()方法而使计数达到零;或 其他一些线程中 ..
发布时间:2020-05-14 00:23:56 Java开发

如何使用ExecutorService Java减少到达Runnable类的运行方法的时间延迟

我正在尝试实现一个实时执行的应用程序,在该应用程序中,单击按钮事件会将任务分配给Thread,该线程将调用 midi方法来播放一些音乐.单击按钮稍有延迟后,必须立即开始播放音乐. MIDI代码在Runnable类的run方法中实现.但是要在按钮单击事件本身花费 2毫秒以上之后到达run方法的第一条语句. 我尝试使用Executor Service,因为它可以收集新创建的线程,并且可以减少线程引起的 ..
发布时间:2020-05-09 21:10:39 Java开发

同步并发请求以共享慢速操作的结果

我有一个Java UI服务,它有一个API方法,可以调用相对较慢的操作(比如〜30secs)。该操作是无参数的,但它对随时间变化(相对缓慢)的外部数据进行操作。这种方法返回最新结果并不重要 - 如果它们是30秒,那是可以接受的。 最终我需要优化实施慢操作,但作为一个短期修复,我想使操作互斥,这样如果第二个传入请求(在一个单独的线程上)尝试调用该操作而另一个已在进行中,那么第二个一个块直到第一 ..
发布时间:2019-01-08 13:56:02 Java开发

Java支持三种不同的并发模型

我在多线程环境中经历了不同的并发模型( http:/ /tutorials.jenkov.com/java-concurrency/concurrency-models.html ) 本文重点介绍三个并发模型。 并行工人 第一个并发模型就是我所说的并行工模型。传入的工作分配给不同的工作人员。 装配线 工人在工厂的装配线上被组织成工人。每个工人只执行完整工作的一部分。当 ..

java Fork / Join池,ExecutorService和CountDownLatch

我们在java中有三种不同的多线程技术 - Fork / Join池,Executor Service& CountDownLatch 分叉/加入池( ExecutorService 使用有限的控制,它简单易用。您可以使用它 在没有等待的情况下启动并行独立任务 等待所有完成你的任务 当 Callable / Runnable 任务的数量为0时,我更喜欢这个数量少,无限队列 ..

CountDownLatch如何在Java多线程中使用?

有人可以帮我理解Java CountDownLatch 是什么以及何时使用它? 我不清楚这个程序是如何工作的。据我所知,所有三个线程一次启动,每个线程将在3000ms后调用CountDownLatch。所以倒计时将逐一减少。锁存器变为零后,程序打印“已完成”。也许我理解的方式不正确。 import java.util.concurrent.CountDownLatch; impo ..
发布时间:2018-11-26 21:51:49 Java开发