什么是Scala / Java中的NIO问题

时间:2011-03-25 19:53:55

标签: java scala concurrency parallel-processing nio

在jvm中搜索Web并发时,我发现了有关为Scala / Java搜索非阻塞IO库的问题。

有什么问题?如果我想向文件/套接字发送内容,我可以启动单独的线程来完成这项工作。

我知道使用基于事件的线程可能会出现问题 - 因为整个系统都可能被阻止。但它是否引用了JVM / Scala?

ADDED
如果我错了,请纠正我:
我认为当你需要以异步方式调用某些IO函数时,它需要进入单独的进程或系统(重)线程。我对吗?
所以 - 所有关于用通用语言解决这类问题的问题都涉及创建和管理单独的进程或线程。因此,该语言的唯一便利是创建一些线程池,这些线程将被分配给异步中的IO操作。

所以我的假设是。
句子:语言X比Y好,因为调用异步IO操作不会阻止虚拟机是错误的,因为在支持系统线程的每种语言中都有可能管理NIO,唯一的区别就是语言X通过内置库/语言功能为此提供了更好的支持。

  1. 这是假设的真相吗?
  2. 某些语言可以在没有OS系统支持的情况下实现NIO吗? (通过流程/线程)

2 个答案:

答案 0 :(得分:2)

Scala有许多用于并发的工具,而NIO有一些用于非阻塞IO的工具。因此,毫不奇怪,有很多优秀的库可以帮助连接点:

  • Finagle

      

    ......建筑图书馆   异步RPC服务器和客户端   在Java,Scala或任何JVM语言中。   Finagle建在Netty之上,提供了一个   丰富的协议工具集   独立的。

  • Akka是一个非常好的,功能强大的演员/并发/服务包,它也使用Netty来实现内置的远程处理功能

  • Naggati2是来自Twitter的另一个,也建在Netty上,但不确定它是否被Finagle取代。

答案 1 :(得分:2)

以下是一篇可能对您有所帮助的有趣博客文章:http://jim-mcbeath.blogspot.com/2011/03/java-nio-and-scala-continuations.html