У меня есть задача, для которой требуется пул потоков, и каждая задача должна выполняться в том же порядке, что и вызов.Таким образом, я использовал актера akka, но это не сработало, как я ожидал ,, тогда я сделал тест.Вот мой код:
@Test
def actorTest1(): Unit = {
for (i <- 1 to 300) {
val actorRef: ActorRef = actorFactory.createActor("myActor")
actorRef ! Tell(i)
}
Thread.sleep(6000000)
}
@Test
def actorTest2(): Unit = {
val actorRef: ActorRef = actorFactory.createActor("myActor")
for (i <- 1 to 300) {
actorRef ! Tell(i)
}
Thread.sleep(6000000)
}
case tell: Tell => {
Thread.Sleep(900)
log.debug("tell: " + tell.i)
}
Журнал test1, его последовательность не такая, как 1, 2, 3, 4, 5 ..., с другим потоком;case2 имеет значение 1, 2, 3, 4, 5 ..., но test2 всегда использует один и тот же поток.Я хочу, чтобы это работало, поскольку журнал - последовательность с другим потоком, как:
2018-11-22 20:13:19.280 DEBUG 14176 --- [thread-1] : tell: 70
2018-11-22 20:13:19.857 DEBUG 14176 --- [thread-2] : tell: 71
2018-11-22 20:13:20.362 DEBUG 14176 --- [thread-3] : tell: 72
2018-11-22 20:13:20.823 DEBUG 14176 --- [thread-4] : tell: 73