问题标签 [countdownlatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 增加线程数的高延迟
在下面的代码中,DataGather = endDataGather - beginDataGather 需要 1.7 毫秒和服务响应时间 = service_COMPLETED - service_REQUEST_SENT,从 20us 到 200us 不等(因为它们在同一个局域网上被模拟为虚拟,因此如此之低)现在如果我将 tomcat8 线程从 10 增加到200,DataGather 增加到 150ms +,即使我将线程从 200 增加到 1000,它甚至会增加 250+。机器规格 8 核 Xenon,64gb ram。当 apache 基准测试使用 -n 40000 -c 100 args 运行时测量时间,这是由于线程调度/上下文切换还是其他原因?我如何摆脱这种变化?当延迟为 20-100 毫秒的真实服务出现时,它会保留吗?
java - Android锁定线程中的CountDownLatch
CountDownLatch
我刚刚开始在我的 Android 应用程序中玩耍。目前我正在尝试向Volley
我的 api 发出两个请求,并等到数据被检索和存储后再继续执行线程。
这是我的代码示例:
问题是它似乎没有“完成”倒计时,因此因为从未释放闩锁而冻结。我已经确认 API 请求正在工作并且onSuccess
回调成功命中,但线程挂起。
更新
我刚刚注意到CountDownLatch
设置为 0 时,它会命中onSuccess
,但是当我将它设置为大于 0 的任何值时,它会冻结并且onSuccess
永远不会被调用。线程似乎有些时髦。
java - java中CountDownLatch的意义何在?
CountDownLatch
在 java 中是一个高级同步实用程序,用于防止特定线程开始处理,直到所有线程都准备好。
但是,Semaphore
完全可以做同样的事情。那么,有什么优点CountDownLatch
呢?
还有一个问题:如果CountDownLatch
确实有一些优点,为什么它被设计为只使用一次?我认为添加 set 方法来重置计数很容易。
java - Firebase 数据库获取节点值
我想从我的 Firebase 实时数据库中获取我的 wgID,它的值是 /WG/FlatNumber/ 现在这是我的代码:
主要活动:
schreibeFlat 对象:
所以当我不使用 CountdownLatch 时,System.out.println
给我这个:
所以正如我所看到的,在方法已经准备好之后,监听器被执行。
如果我使用 CountDownLatch,它只会运行到“cdl.await()”,然后停止,监听器永远不会执行,应用程序也会停止。
那么如何获取我的 ID,我的意思是我只想要我的数据库中的一个值,你可以用“setValue()”设置它,但你不能用“getValue”之类的东西来读取它,它必须由侦听器完成?
multithreading - CountDownLatch 中的 await() 的目的是什么?
我有以下程序,我正在使用java.util.concurrent.CountDownLatch
并且不使用await()
方法它工作正常。
我是并发新手,想知道await()
. 在CyclicBarrier
我可以理解为什么await()
需要,但为什么在CountDownLatch
?
类CountDownLatchSimple
:
类Runner
实现Runnable
:
输出
二是等待。
三是等待。
一是等待。
一个已完成。
二是完成。
三是完成。
concurrency - Racket 中的并发原语
我正在学习如何在 Racket 中实现信号量和倒计时锁存器。现在我正在使用 Racket Docs,但我觉得它们不是很有用。
你会推荐任何网站、教程、教科书、视频来帮助我完成整个学习体验,同时解决死锁、竞争条件和其他并发问题吗?非常感谢您的帮助:)
java - 在 Spring 4 中运行并行线程的优雅方式
我正在开发一个 API。此 API 需要执行 2 次 DB 查询才能获得结果。
我尝试了以下策略:
- 在 Controller 中使用 callable 作为返回类型。
在服务中创建 2 个线程(使用 Callable 和 CoundownLatch)以并行运行 2 个查询并检测完成时间。
/li>
它工作得很好,但我觉得我在某个地方打破了 Spring 的结构。
我想知道在 Spring 4 中获取数据的最有效方法是什么
。-如何知道运行自己的查询的两个线程都完成了工作?
-如何控制线程资源的使用和释放?
提前致谢。
java - Java 7 并行执行没有提高使用倒计时闩锁的 REST API 的性能
我正在用 Java 7 编写一个 REST API 来从数据库中检索三个项目并将所有三个项目作为响应一起发送给用户。当程序在顺序流中运行时,即如果我获取一个项目然后另一个项目,那么它需要合法的时间来执行。但是当我使用多线程,即使用三个线程从数据库中获取三个项目时,与顺序相比,它需要更多的执行时间。这个问题导致CPU 使用率 超过 90%。
例子:
我正在使用 ExecutorService 来实现异步执行机制和用于线程同步的Countdown 锁存器。
为什么并行执行比顺序执行花费更多时间?在这里使用倒计时锁存器有什么缺点吗?
使用倒计时闩锁执行工作线程的代码:
ItemLookupThread 是我的线程类:
java - Java并发:修改latch/ThreadGroup实现Executor行为
这个问题与我在 Java 并发主题中的作业有关。我的任务是生成新线程并通过给定的concurrencyFactor
. 也就是说,继续调度新线程,直到活动线程数小于或等于concurrencyFactor
。如果活动线程数等于concurrencyFactor
,程序将等待活动线程数减少到concurrencyFactor - 1
并创建一个新线程。
作为第一种方法,我正在使用ExecutorService
并创建一个新的固定池Executors.newFixedThreadPool(concurrencyFactor);
,每当我的方法被调用时,我只是向这个池提交一个新的可运行文件。逻辑代码如下:
现在,第二部分要求我实现相同的目标,但不使用执行器。我想到了以下两种方法:
1)使用countDownLatch
但这个锁存器会等待(即latch.await()
)直到activeCount
变成0
。我只想等到倒计时变成concurrencyFactor - 1
.
2)使用ThreadGroup
并等待直到threadGroup.activeCount() < concurrencyFactor
。但是,这种方法的问题是如何让传入的请求等到条件 threadGroup.activeCount() < concurrencyFactor
满足?我为这种方法使用了以下代码:
我可以在第二种方法中用一些等待条件替换空白的 while 循环吗?
对上述方法的任何建议或对任何新方法的建议将不胜感激。
javafx - 锁存器如何在 javafx 中无效?
我在开发javafx时遇到一个问题,我发现latch
在JavaFx中没有效果,例如在下面的代码中:
由于我设置了一个闩锁来停止 JavaFx 主线程latch.await();
,并希望可调用线程fibCallable
首先输出内容:所以我期望:
但实际输出相反:
为什么?和解决方案?