小编tar*_*sbl的帖子

.awaitTermination()是否在执行程序中完成工作之前发生了?

问题我已经多年了:在这个伪代码中,

ExecutorService svc = Executors.newFixedThreadPool(3);
svc.submit(new Runnable() { /* code A */ });
svc.shutdown();
if(svc.awaitTermination(...)) {
    // code B
Run Code Online (Sandbox Code Playgroud)

.awaitTermination()没有记录在代码A和B之间发生的事情. 有没有理由不是

ExecutorService的concurrent包的javadoc定义的之前发生完成的任务和工作之间之前,他们已提交,但不执行的任务和代码之间的成功后.awaitTermination()调用.

注意,我不是要求设计批评如何重构我的代码以利用记录的事先关系.我的问题是,在这种情况下,有没有理由说文档没有提及?

(请注意,尽管标题非常贴切,但这并不是22665198的重复.)

java concurrency executorservice memory-barriers happens-before

10
推荐指数
1
解决办法
271
查看次数

在代码中设置akka TestKit默认超时

TestProbe.expectNoMsg()在不在config中的代码中设置默认超时的正确方法是什么?

我知道我可以akka.test.single-expect-default在application.conf中定义,但这适用于我的模块中的所有测试.或类似的东西

ActorSystem(.., ConfigFactory.parseString("{akka.test.single-expect-default = 0}"))
Run Code Online (Sandbox Code Playgroud)

在代码工作,但我希望能够设置此超时

implicit val timeout = Timeout(100 millis)
Run Code Online (Sandbox Code Playgroud)

我已经看过但是没有得到认可.

我的考试是

@RunWith(classOf[JUnitRunner])
class MySuite extends path.FunSpec with Matchers {

    implicit val system = ActorSystem("MySuite")

    val probe = new TestProbe(system)

    describe ("timeout") {
        println("Waiting..")
        probe.expectNoMsg()
        println("Waited")
    }
}
Run Code Online (Sandbox Code Playgroud)

scala akka

7
推荐指数
1
解决办法
1785
查看次数

为什么java.util.Optional不实现Iterable?

Java 8为什么没有Optional实现Iterable

我认为这是故意的语言选择,但我想知道为什么。Scala Option和Haskell的Maybe实现遍历方法类似于Iterable。FWIW,Java 9将实现Optional.stream()JDK-8050820)。

java optional java-8

6
推荐指数
1
解决办法
897
查看次数