-4

我的问题是,我有两个线程 t1 和 t2。他们都做了一些计算,根据我的程序,我想使用一种并发技术,阻塞直到 t1 和 t2 都完成他们的任务然后继续。

我试过了countdownLatch,我阅读ExecutorService并做了一个小例子。关于ExecutorService我做了如下的事情:

executor.execute(new RunnableClass(bgr,3))
executor.execute(new RunnableClass(bgr,7))
executor.shutdown();

if (executor.isTerminated()) {
    print("terminated") 
}

并且从未打印过“终止”一词,这意味着executorService对象不会阻塞。

请让我知道我应该使用哪种并发技术来适应我的情况

4

1 回答 1

0

在开始编码之前阅读文档总是会澄清一些事情。但只是想分享几点:1.) CountDownLatch 可以解决您的问题。在编码之前阅读此链接.. http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html 基本上这个概念是你已经将你的程序锁定在一个固定的状态和阻止它继续进行,直到释放闩锁。因此,您有 2 个线程...将 countdownlatch 值设置为 2。使两个线程在完成后递减该值。直到锁存器值递减到 0,主线程将等待这发生。

executor.shutdown ....参考文档...它说它在关闭之前等待所有提交的任务完成。

于 2015-05-05T11:59:56.893 回答