Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法让akka演员暂停X时间_Java_Akka - Fatal编程技术网

Java 有没有办法让akka演员暂停X时间

Java 有没有办法让akka演员暂停X时间,java,akka,Java,Akka,我们有一个Akka演员正在阅读一个包含许多文件的大文件夹 它读取它们以供其他参与者处理 看起来它读取的速度太快了,最终我们遇到了OutOfMemoryException 我们想知道是否可以暂停/休眠X时间?对于内存不足的问题,您可以增加actors邮箱的队列大小。 对于睡眠/暂停,您可以使用schedular将消息安排给参与者一段特定的时间。 无需显式地导致参与者睡眠:对每个参与者使用loop和react意味着底层线程池将有等待的线程,而参与者没有要处理的消息 如果您希望为参与者安排要处理的事件

我们有一个Akka演员正在阅读一个包含许多文件的大文件夹

它读取它们以供其他参与者处理

看起来它读取的速度太快了,最终我们遇到了OutOfMemoryException


我们想知道是否可以暂停/休眠X时间?

对于内存不足的问题,您可以增加actors邮箱的队列大小。 对于睡眠/暂停,您可以使用schedular将消息安排给参与者一段特定的时间。 无需显式地导致参与者睡眠:对每个参与者使用loop和react意味着底层线程池将有等待的线程,而参与者没有要处理的消息

如果您希望为参与者安排要处理的事件,使用java.util.concurrent实用程序中的单线程调度器非常容易:

object Scheduler {
import java.util.concurrent.Executors
import scala.compat.Platform
import java.util.concurrent.TimeUnit
private lazy val sched =Executor.
new SingleThreadScheduledExecutor();
def schedule(f: => Unit, time: Long) {
sched.schedule(new Runnable {
def run = f
},
time , TimeUnit.MILLISECONDS)}}

你可以自己暂停,我的意思是你应该让演员停止处理文件,并设置一个计时器,在X秒/分钟后给自己发送一条恢复消息

但是。。。你永远也找不到合适的时间X,它总是太长或太短。这种问题是为什么存在的。我建议你看看,因为这是解决这类问题的唯一好办法