问题标签 [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 - 您将如何在 EJB3 中实现来自数据库和 Web 服务的数据连接?
我需要从外部服务中获取一些数据。我还不知道该服务是否将是一个简单的 servlet,或者可能是 Web 服务或其他东西。让我们假设现在外部服务只是一个简单的 servlet,它在 HTTP 请求后返回 JSON。我还从我的数据库中获得了一些相同类型的数据。
我需要编写一个代码来调用该服务并搜索数据库并从两个数据源返回连接的结果。
外部服务可能不可用,所以我必须写一些东西以避免永远等待不工作的外部服务。
我使用封装在 JPA 中的 EJB3 和 Hibernate 进行数据库访问。
我的简单解决方案的伪代码如下所示:
您将如何实施这项任务?我的解决方案好吗?
java - 如何在 Java 中创建远程锁存器?
目前我有一个服务器:
1) 使用 localhost 上的执行程序启动 100 个 servlet 请求
2) 执行 servlet 请求。
3) 减少一个锁存器,计数已完成的 servlet 的总数。
4) 计算执行时间。
我想在另一台“客户端”机器上移动点 1、3 和 4。
所以我的客户端应该向服务器的 servlet 发送 100 个请求,等待所有响应(可能使用远程锁存器?),然后计算执行时间。
我怎样才能达到这个结果?
java - 管道流和倒计时锁存器
我正在尝试对一个程序进行原型设计,该程序将读取一个流,然后在线程池中启动新的处理流,因为主线程在流中走得更远。我遇到了 PipedStreams 和 CountDownLatch 的问题。
当我在主线程中注释掉“latch.await()”运行以下代码时,我收到“Write end dead”错误。当我使用未注释的“latch.await()”运行时,程序挂起并且没有线程退出。
任何想法我做错了什么或关于如何更好地处理具有多个处理流的单个流的建议。谢谢。
带有latch.await() 的输出注释掉了:
输出带有未注释的latch.await():
修改后的代码:
修改后的输出:
java - 我可以使用 CountDownLatch 控制线程执行的顺序吗?
我有任务要做。我必须创建 4 个服务 A、B、C 和 D。每个服务都应该有自己的线程。一个服务应该只有在它所依赖的所有服务都启动后才能启动,而一个服务应该只有在所有依赖它的服务都停止后才能停止。服务应尽可能并行启动和停止。服务 B 和 C 依赖于服务 A 服务 D 依赖于服务 B 要启动服务 D,需要启动服务 A 和 B 要停止服务 A,必须先停止服务 B、D 和 C 可以启动服务 B 和 C在 A 启动后立即并行。相反,它们可以并行停止。
你对如何解决这个问题有什么建议吗?我试图在过去 10 天里这样做......我可以用 CountDownLatch 还是用其他东西来做?任何建议都是可观的。
java - Java多线程中如何使用CountDownLatch?
有人可以帮助我了解 JavaCountDownLatch
是什么以及何时使用它吗?
我对这个程序的工作原理不是很清楚。据我了解,所有三个线程同时启动,每个线程将在 3000 毫秒后调用 CountDownLatch。所以倒计时会一一递减。锁存器变为零后,程序会打印“已完成”。也许我理解的方式是不正确的。
//------------------------------------------------ -----
android - 如何在方法中实现“下载器文件”?
我创建了一个代码来下载显示进度条进度的多个文件。这完美地工作,但现在我想将它部署到外部项目(库本身)并且我遇到了问题。
我的意图是调用“下载”,当下载完成或返回 0 或 1。但是异步的方法在完成之前返回值。我试图用“CountdownLatch”控制它但没有成功......知道吗?
以下代码有效,问题是“下载”方法返回值而不等待它完成其余代码。
主.java
MyLib.java
java - Java 奇怪的图形在 lock.await() 时闪烁
我的图形用户界面有一个奇怪的行为。首先这里有一段代码:
在第二这里我的gui:
这里是我的问题:每次调用 lock.await 我的屏幕看起来像这样:
如您所见,在我的每个圆圈后面,每次调用 lock.await() 时都会显示我的 gui 的左上角(至少我认为它是在调用 lock.await() 时,因为当我删除 lock.await( ) 我看不到我的 gui 的整个动画,但我也看不到这种奇怪的行为,并且当程序通过 doInBackground() 的所有代码时,这种行为总是出现。
是什么导致了这种奇怪的行为?
java - 如何确保只有一个线程启动
情况是,我必须确保在尝试 getConnection 时只创建一个 RecoveryThread,如果在 PrimaryData Source 上的 getConnection 上失败,我的代码是:
如果有两个不同的线程试图获取连接,这可能会最终调用 requestFailover() 方法两次,当它被调用两次时,这将最终创建两个 recoveryService 线程,我能做些什么来确保永远不会发生?
在此先感谢您的帮助。
java - 向Java中的另一个线程发送关闭信号
我有一个应用程序,它在一个单独的线程中的 while 循环中重复运行某些东西,直到用户触发关闭信号。我可以通过在工作线程中设置一个(易失的)布尔字段来将信号从主线程发送到工作线程,但是有没有其他方法可以关闭/中断线程,例如通过'java.util中的任何实用程序。同时'?
我曾尝试调用 ExecutorService 的 shutdown() 或 shutdownNow() 方法,但它们无法停止工作线程。同样调用shutdown() 并按照此处!Thread.currentThread().isInterrupted()
推荐的在while 条件下使用是无法打破循环。我能找到的唯一另一种方法是使用 CountDownLatch,但在这里我必须在条件 for while 循环中使用,但这种方法的 javadoc 文档说CountDownLatch.getCount() != 0
此方法通常用于调试和测试目的。
这使得它成为 IMO 的一个值得商榷的方法。下面是我的示例代码
还有其他干净的方法吗?
java - Java并发 - 离开方法后重置条件
我正在尝试找出解决以下问题的方法:
我面临的问题似乎很简单,但我很难看到如何捕获所有边缘情况。
例如,一种解决方案可能是将Lock
s 与Condition
s 一起使用,然后所有线程waitOnCondition
将继续运行,await
直到标志设置为 true,然后继续。然后执行的线程signal()
将使用相同的锁,将标志设置为 true 和signal
。然后,释放的线程将重新获取锁以将条件设置为 false。但是,这并不能保证所有线程都会到达 getValue 点。例如:
线程 1 和 2 正在等待,获取信号。发出信号后,线程 1 重新获取锁,检查条件,现在为真,然后继续。获取值,获取锁并将条件设置为 false。线程 2 现在认为条件仍然为假,并再次阻塞。
另一种非常简洁优雅的解决方案是使用CountDownLatch
. 这保证了所有线程都将继续进行。但是,这是不可重置的。还有其他想法或意见吗?