问题标签 [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.

0 投票
1 回答
1137 浏览

java - 当我尝试倒计时时同步被阻塞

我使用 CountDownLatch遵循了我在这篇文章中找到的建议,但遇到了问题。我写了这个测试并运行它,当我尝试同步锁定时,我的线程创建了块。

为什么这不起作用?

0 投票
1 回答
178 浏览

java - 多线程不起作用

我正在尝试使用 GUI 界面运行代码。但是在我继续我的主要方法之前,我需要关闭所有的 GUI 窗口(我需要的一些信息是从 GUI 窗口收集的,如果没有这些信息,我将无法运行我的其余代码)。因此,我决定使用 CountDownLatch 创建两个线程(其中一个是我的主要方法,另一个是处理我的 GUI 内容的类)。但是当我运行我的代码时,它会卡在 GUI 的末尾,并且不会继续执行我的代码。有人知道我的代码有什么问题吗?

这也是我的 GUI 内容的 CountDownLatch 代码:

}

0 投票
5 回答
9338 浏览

java - join 和 CountDownLatch 有什么区别?

当等待其他线程完成时,我们可以使用joinCountdownLatch。使用这两种机制的优缺点是什么?

0 投票
1 回答
324 浏览

java - 可以使用静态锁存器或信号量吗?

我有一些实现 Runnable 接口的类。它们中的每一个都通过单独的 SingleThreadExecutor 执行。我无法修改执行例程,我只能为其提供不同的 Runnables。

我需要根据其他 Runnables 结果对 Runnables 进行一些操作。即,我想在 run() 方法中运行一些操作,以防所有其他 Runnables 都达到该执行点。或者,仅当执行相同操作的 Runnable 数量小于 10 时,我才想在 run() 方法中运行一些例程。

我看到的唯一解决方案是使静态变量 CountDownLatch 和 Semaphore 同步。

我实现了这个,但是由于一些未知的原因,如果一些 Runnable 正在等待 Latch 或 Semaphore,则从一些 Runnable SingleThreadExecutor 开始不会使用下一个 Runnable 启动线程。例如 7 Runnables 启动,其他则不启动。

我的问题:我在静态 Latch 或 Semaphore 上同步的方案是否正确?

0 投票
2 回答
3083 浏览

android - Android CountDownLatch.await() 过早冻结 UI

所以我正在运行一些带有 CountDownLatch 的线程。

我的问题是,当我调用latch.await() 时,用户界面似乎挂起,甚至事先调用的用户界面命令也没有效果。例如

前两行对 UI 没有影响。

知道为什么这是并且可能是解决方案吗?谢谢。

0 投票
2 回答
118 浏览

java - 有没有办法在Java中将方法声明为新线程

我有一个正在监听随机数的程序。它连接到一个发布者,它给了我一个数字和一个新的计数,每次我得到更新时,我都会将该数字的当前计数存储在 HashMap 中。

我还有一个监听请求的 SSL 服务器。当一个请求询问“我们有多少个 7”时,我只返回我的 HashMap 中的值。

现在我想添加一个逻辑,如果我们有 0 次出现该数字,请等到我们得到 1 次,然后返回该点的计数。但是,由于 Thread 的 run 方法的限制,我正在挣扎,它必须是一个 void。我想知道是否有任何方法可以将我的方法声明为始终启动新线程的方法,或者可能是比我正在做的更好的处理方法。这是我所拥有的:

但是,我不能将 return 语句放在 run 方法中。那么如何做到最好呢?

谢谢!

0 投票
2 回答
1114 浏览

java - Java - 在 COUNTDOWNLATCH 中计数

在运行每个线程时,为什么即使在前一个线程已经调用 countdown.countDown() 并将 Latch Count 减 1 之后,countdown.getCount() 总是打印“3”?

我有点担心 Java 如何知道 Latch Count 已达到 0,以便它可以释放所有 3 个线程。

}

0 投票
1 回答
393 浏览

java - CountDownLatch 在尝试等待时抛出异常()

我有一个线程 A 运行另一个线程 B。线程 A 实现了一个方法“stopExec()”,它试图干净地退出线程 B - 允许它完成一些任务。所以我的 stopExec 方法看起来像这样:

线程 B 引用了线程 A,它调用“threadA.lock.countDown();” 当它完成它正在做的任何事情时。

抛出异常会发生什么......线程A不等待,而只是继续。有人可以解释我为什么/我做错了什么。在其他情况下,我以类似的方式使用了 CountDownLatch,它按预期工作。

谢谢!

0 投票
1 回答
2600 浏览

java - 如何显示启动画面,在后台加载数据,然后隐藏启动画面?

我正在设计一个简单的 JavaFX 表单。

首先,我加载 JavaFX 环境(并等待它完成),如下所示:

这工作正常。(之所以需要先用这种方式加载JavaFX,是因为它主要是一个Swing应用,里面有一些JavaFX组件,不过是后面加载的)

现在,我想在启动时添加一个启动画面,并在 JavaFX 环境加载时显示它(实际上在屏幕上显示了大约 5 秒,因为我的应用程序有徽标、商标等)需要出示)

所以我想出了一个 SplashScreen 类,它只在屏幕上显示一个 JWindow,就像这样:

现在,我希望启动画面加载并显示自身 5 秒。同时,我也希望加载 JavaFX 环境。

所以我像这样更新了 CountDownLatch :

所以,它正在工作,但飞溅只停留在 JavaFX 环境加载,所以基本上它卸载得非常快(这是正常的,考虑到我编写的代码)。

如何在不冻结 EDT 的情况下至少显示 5 秒的闪屏(如果 JavaFX 加载速度更快)?

谢谢。

0 投票
1 回答
297 浏览

java - 为什么我的第二个线程没有运行?

我有以下程序,我想让吸烟者等待代理的 3 个线程。我正在尝试使用 CountDown 闩锁来实现这一点。

出于某种原因,当我使用以下代码运行 Pam.run 时,它只是在latch.await 上冻结,而我的其余线程不运行。所以我的问题是我怎样才能正确地做到这一点,以便前 3 名吸烟者等待latch.countdown(); 由代理线程调用。