我的理解是,传统的java、php 会创建新的线程来处理阻塞的任务,
对于Node.js
从这张图来看, 在事件队列中 还是把那些阻塞的任务交给了线程池中的线程来处理阻塞事件了啊,为什么说Node.js效率很高?
我的理解是,传统的java、php 会创建新的线程来处理阻塞的任务,
对于Node.js
从这张图来看, 在事件队列中 还是把那些阻塞的任务交给了线程池中的线程来处理阻塞事件了啊,为什么说Node.js效率很高?
Nodejs
的优势是 事件驱动
,也就是异步操作
。
比如,多文件IO操作,Nodejs 可以异步读取,当读取完之后,调用事件监听函数,每个文件的IO事件的监听和执行是分开的。而不用像 java
里去启动多个进程,每个进程单独做一个文件IO操作。
其实并不高,快就快异步处理。
能够满足一般情景下的要求,就像10个人排队进门和10个人蜂拥而上。node满足这个10人同时进门。但如果场景是100个人同时进门,内存狂飙,那node就挂了。如果是java,虽然慢点,但至少不会挂。
简单来说,node快就快在同时处理,不用一个一个等。
java这些慢就慢在需要一个一个来,不能急。不过现有很多框架支持可以让java/php执行异步。
效率很高的呀,它一个runtime级别的东西,拿来对标的都是Java这种语言级,……所以jvm存在感就这么弱么?另外javascript上手快人数多,也是个优势。至于和这个和那个比较的那些,都是宣传嘛不要在意。
我觉得去看IO这块更有意义吧。可以参考下朴灵老师的初探Node.js的异步I/O实现
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.7k 阅读✓ 已解决
你的疑惑在于:
Node 线程池中的线程和 PHP 中多线程来处理事件,为什么 Node 快?
PHP 在并发开启多线程时,需要配套使用的资源和处理的事情相对更多。
而且需要自己编写相关逻辑进行多线程操作,不过你确定在自身大量消耗 CPU 的情况下它依旧这样做?
Node 是天然的呆,新鲜的专门用来处理 IO ,没有历史包袱下的冗余代码。
它CPU消耗低,给东西就处理,多点不过量也直接接收,之后根据具体事情看是否应该创建相应线程得到结果后返回。