问题标签 [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 - 在递归块中使用 CountDownLatch 和 Object.wait 挂起
问题:尝试分阶段检索递归块内的值时,执行被挂起。
说明: CountDownLatch
&Object.wait
用于实现递归块内部值的分阶段访问。但是,程序挂起并显示以下输出:
程序:
分析:
在我的初步分析中,看起来等待是递归发生的,尽管notifyAll
是从主程序调用的。
求助:
为什么free lock使用notfiyAll
后aCountDownLatch
没有生效?需要有人帮助了解该程序中到底发生了什么。
java - 如何使用 CountDownlatch 使线程按顺序工作?
我正在学习如何在 java 中使用 countdownLatch,并在代码中创建了一个简单的示例,如下所示。
我对这种机制的了解是,它只是一种强制只有一个线程等待其他线程直到他们完成工作,然后等待的线程将在其他线程完成时启动它的工作.
我的问题是,如果我有 4 个线程“t1、t2、t3 和 t4”,它们应该按照说明的顺序开始,并且每个线程应该在前一个/前一个线程完成时开始。换句话说,t2 应该等待 t1 并在 t1 结束时开始,t3 应该等待 t2 并在 t2 结束时开始,t4 应该等待 t3 并在 t3 结束时开始。
1-如何使用 CountDownLatch 和循环障碍来做到这一点?
2-传递给CountDownLatch类的构造函数的countDown参数应该代表等待的线程数吗?
代码:
}
java - 带线程的 Java CountDownLatch
我希望了解如何使用 Java CountDownLatch 来控制线程的执行。
我有两节课。一个被称为Poller
,另一个是Referendum
。线程在Referendum
类中创建,它们的run()
方法包含在Poller
类中。
在 Poller 和 Referendum 类中,我通过 import 导入了 java 倒计时锁存器java.util.concurrent.CountDownLatch
。
我主要想了解为什么以及在哪里需要应用*.countDown();
and语句,以及了解我是否在构造函数中正确初始化了 countDownLatch。*.await();
Poller
这两个类的完整代码是:
和
简而言之......所有线程必须在执行publishPollResults();
之前执行语句revealResults();
。
java - 如何将 CountDownLatch 用于两个不同的线程,每个线程都有相同的可运行类
如何使用CounDownLatch
两个不同的线程,每个线程都有相同的可运行类?我希望 FICS 和 fiCS_R7 具有相同的可运行类 FICS,但是当 fiCS_R3 完成时 fiCS_R7 启动。
我怎样才能做到这一点。
代码:
java - 如何知道闩锁是否完成了任务
我有两个线程countDownLatch
设置为 1,因此,当第一个线程完成时,第二个线程应该启动。我想要做的是,当第二个完成任务时,我想从两个线程中计算出数据来做一些操作。
现在我的问题是,有没有办法知道CountDownLatch
对象是否完成了任务?
更新
使用安全吗
java - ExecutorService 和 CountDownLatch 会阻塞主线程直到它们完成吗?
我的问题是,我有两个线程 t1 和 t2。他们都做了一些计算,根据我的程序,我想使用一种并发技术,阻塞直到 t1 和 t2 都完成他们的任务然后继续。
我试过了countdownLatch
,我阅读ExecutorService
并做了一个小例子。关于ExecutorService
我做了如下的事情:
并且从未打印过“终止”一词,这意味着executorService
对象不会阻塞。
请让我知道我应该使用哪种并发技术来适应我的情况
java - 如何知道线程需要完成的确切时间
我有两个线程 t1 和 t2。他们都做了一些计算,我试图阻止主线程直到 t1 和 t2 完成。我使用 .awaitTermination() 如下所示,但问题是,尽管它是一个 if 语句,但 .awaitTermination() 进入无限循环。
请帮我找出正在发生的事情。我应该在不知道 t1 和 t2 需要完成的确切时间的情况下指定时间量吗?
java - ExecutorService 在线程完成之前不会阻塞
我有一个 FeatOrientation 类,在它的构造函数中的那个类中,我在一个单独的线程中执行两个操作,每个操作都在一个单独的线程中执行,并且我正在使用 CountDownLatch 以便当 gaussThread 完成时 laplaceThread 启动。
在具有主要方法的主类中,我正在使用 ExecutorService 和“.runAsync(new FeatOrientRun(bgrMat), featOrientExe);”
在运行方法中,我调用“calcFeatOrient”函数,并在该函数中从 FeatOrientation 类实例化一个对象。和线
我用它来阻塞主线程,直到 FeatOrientation 类中的两个线程完成,然后我进行一些计算或显示一些数据,如
问题是,在运行时我从控制台收到下面显示的输出,尽管 getSmoothedImgList 不为空。通过注释掉以下三行,我知道它不是空的:
我在 main 方法中从 FeatOrientation 类实例化了一个对象,然后,让主线程休眠 7 秒,在 7 秒后,我调用了以下几行
我收到了outout。
请让我知道我在 ExecutorService 上做错了什么,以及为什么我在下面发布的代码中遵循的方法不起作用,所以我等到 FeatOrientation 类完成它才起作用。
控制台输出:
主要课程:
FeatOrientation 类:
java - 如何从 CompletableFuture 获取结果
下面代码中提到的每个“CompletableFuture.runAsync”都会进行一些计算,每次调用“CompletableFuture.runAsync”时我都想得到结果。或者换句话说,我希望每个“future0,future1,future2,future3”分别包含每次调用“CompletableFuture.runAsync”的结果
我怎样才能做到这一点。
*更新:
我的要求是,对于每次对 CompletableFuture.runAsync 的调用,我都会进行一些计算,并且应该返回这些值的 ArrayList。在对 CompletableFuture.runAsync 的四次调用之后,我想对返回的 ArrayLists 进行一些进一步的计算。
代码: