Cra*_*lin 13 concurrency unit-testing scala actor
如何等待Scala Actor退出()?我在单元测试中设置了两个Actors,并发送一些消息以启动它们.他们来回发送一些消息,最终都调用exit().如何使我的单元测试等待两个演员在通过之前完成?
如果您事先知道演员之间交换的消息数量,则可以使用a java.util.concurrent.CountDownLatch来跟踪消息的数量.在演员中,每次处理完消息后,都可以
latch.countDown()
Run Code Online (Sandbox Code Playgroud)
并在你的主线程做
latch.await()
Run Code Online (Sandbox Code Playgroud)
这将使您的主线程等待,直到锁存器的计数降至零.
如果你事先不知道消息的数量,但有条件表明完成,那么你可以使用java.util.concurrent.locks.Condition.在演员中,当你的状况满足时,做
if (conditionSatisfied)
condition.signal()
Run Code Online (Sandbox Code Playgroud)
并在你的主线程做
while (!conditionSatisfied)
condition.await()
Run Code Online (Sandbox Code Playgroud)
让它等到条件满足.
见的Javadoc CountDownLatch并Condition了解详情.
请参阅此要点以获取使用示例Condition.
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |