【发布时间】:2014-01-11 12:28:29
【问题描述】:
node.js 的代码细节我还没看完。
但是,通过对 Node.js 中线程的一些研究,我发现它只有一个线程来接受来自多个客户端的连接。
当与客户端连接时,它会触发连接事件并监听另一个客户端,并以异步方式完全工作,客户端请求的其余操作从线程池执行,结果通过回调发送回主线程(接受连接的线程)。
与 Java NIO 一样,ServerSocketChannel、SocketChannel 也可以设置为非阻塞模式,并且使用选择器单线程可以监控多个通道。因此,使用 NIO ServerSocketChannel、SocketChannel 也可以从单线程中异步管理多个客户端的连接
那么,NIO 的非阻塞模式和 node.js 单线程异步是否遵循单线程概念的相同模式?正如两者所说,它们在单线程上执行。
【问题讨论】:
-
假设异步和非阻塞是相似的模式是常见的误解。 Node.js 还具有非阻塞套接字操作。所以是的,两个框架都有非阻塞 IO,允许它们处理来自单个线程的多个连接。
标签: java multithreading node.js asynchronous nio