什么是Scala/Java中的NIO问题

Rob*_*mba 6 java parallel-processing concurrency nio scala

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

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

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

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

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

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

Ale*_*ise 2

Scala 有很多并发工具,NIO 有一些非阻塞 IO 工具。因此,有很多优秀的库可以帮助连接这些点也就不足为奇了:

  • 菲纳格尔

    ...用于使用 Java、Scala 或任何 JVM 语言构建异步 RPC 服务器和客户端的库。Finagle 构建于 Netty 之上,提供了一组丰富的独立于协议的工具。

  • Akka是一个非常漂亮、功能齐全的 actor/concurrency/services 包,它还使用 Netty 来实现内置的远程处理功能

  • Naggati2是 Twitter 的另一款产品,也是基于 Netty 构建的,但不确定它是否会被 Finagle 取代。