码迷,mamicode.com
首页 > 其他好文 > 详细

ACTOR中不允许出现阻塞

时间:2018-06-07 14:18:06      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:actor   scala   

因为actor接收请求的速度很快,如果出现阻塞(如IO操作)会耗时,接收请求的速度超过程 序处理的速度就可能会导致内存溢出。如果中间需要连接数据库 的话,数据库操作需要在Future 中进行,然后为Future分配线程池, 来保证数据库的操作无阻塞进行。 例如定义一个接口 trait IAsyncDB{ protected val executionContext: ExecutionContextExecutor = ExecutionContext.fromExecutor(new ForkJoinPool(128)) /** * 异步执行dao方法 * * @param body dao的方法 * @tparam T 返回类型 * @return */ def async[T](body: => T): Future[T] = Future(body)(executionContext) } 然后在有数据库操作的类中继承这个接口,数据库操作调用async方法: class UserService(userDao:UserDao) extends Actor with IAsyncDB{ override def receive: Receive = { case "find" => async(userDao.find) case "other"=> println("hahahahaha") } }

ACTOR中不允许出现阻塞

标签:actor   scala   

原文地址:http://blog.51cto.com/8953871/2125901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!