小编use*_*724的帖子

java.nio对Web服务器有什么好处?

我知道这是一个经常出现的问题,我读过以下文章http://www.mailinator.com/tymaPaulMultithreaded.pdf,说nio比io更好地扩展并不一定正确.

但是我很难看到java nio在开发Web服务器时比传统的acceptor/worker线程架构更好地扩展吗?让我解释:

通常,Java Web服务器使用以下模式来处理连接:

  • 一些受限线程仅限于ServerSocket的accept()方法上的核心块数:

    while (true) {
      socket = serverSocket.accept();
      // handleRequest submits the socket to a queue
      handleRequest(socket);
      socket.close();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 检索客户端套接字时,它将提交到非阻塞队列,然后由工作线程池中的工作线程处理.工作线程数取决于正在执行的操作的持续时间.

如何使用java.nio使这个架构更具可扩展性?

我的意思是我仍然需要工作线程来处理将执行阻塞操作的请求(访问数据库或文件系统,调用外部服务).如果后端操作不像node.js那样异步执行,我仍然需要工作线程来限制整体可扩展性与1或2个事件调度程序线程的关系.

java io networking nio

6
推荐指数
1
解决办法
3123
查看次数

标签 统计

io ×1

java ×1

networking ×1

nio ×1