加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala的演员是否有任何非阻塞IO开源实现?

发布时间:2020-12-16 09:28:59 所属栏目:安全 来源:网络整理
导读:我有相当大的文件需要处理(500Meg zip文件). Scala的演员是否有任何非阻塞的IO开源实现? 解决方法 如果我的问题正确,则需要非阻塞IO文件.那时我有个坏消息. NIO Java6中的Java NIO仅支持在处理文件时的阻塞操作.您可能会注意到事实上 FileChannel 没有实现
我有相当大的文件需要处理(500Meg zip文件).

Scala的演员是否有任何非阻塞的IO开源实现?

解决方法

如果我的问题正确,则需要非阻塞IO文件.那时我有个坏消息.

NIO

Java6中的Java NIO仅支持在处理文件时的阻塞操作.您可能会注意到事实上FileChannel没有实现SelectableChannel接口. (NIO确实支持套接字的非阻塞模式)

NIO.2(JSR-203)规范旨在克服java.io和NIO的许多当前限制,并为文件上的异步IO提供支持.据我所知,NIO.2将与Java 7一起发布.

这些是Java库限制,因此您在Scala中也会遇到它们.

演员

演员基于Doug Lea的Fork-Join框架(至少在分支2.7.x到version 2.7.7). FJTask class的一句话:

There is nothing actually preventing
you from blocking within a FJTask,and
very short waits/blocks are completely
well behaved. But FJTasks are not
designed to support arbitrary
synchronization since there is no way
to suspend and resume individual tasks
once they have begun executing.
FJTasks should also be finite in
duration — they should not contain
infinite loops. FJTasks that might
need to perform a blocking action,or
hold locks for extended periods,or
loop forever can instead create normal
java Thread objects that will do so.
FJTasks are just not designed to
support these things.

FJ库在Scala中得到了增强,提供了一种统一的方式,允许演员像线程一样运行,或者像基于事件的任务一样,具体取决于工作线程的数量和“库活动”(您可以在Philipp的技术报告“Actors that unify Threads and Events”中找到解释)哈勒和马丁奥德斯基).

解?

但毕竟如果你在一个actor中运行阻塞代码,它的行为就像它是一个线程一样,那么为什么不使用普通的Thread来阻塞读取并从这个线程向基于事件的actor发送事件呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读