文章詳情頁
javascript - 一個node和java并發場景對比, 幫忙解釋一下
瀏覽:82日期:2023-11-28 14:48:06
問題描述
假設單核CPU下安裝一個node程序, 程序里面很簡單, 一個http服務器, 有請求進來, 延遲5秒返回結果(可以理解了5s同步做一些事情)
當有3個請求同時進來時, 請問結果會是哪個場景:場景1:第一個請求在5秒后拿到結果, 第二個和第三個是在10s和15s后拿到結果場景2:所有請求都是5秒后拿到結果
如果換成java+tomcat, 會是哪種場景, 謝謝大家!
問題解答
回答1:如果是 同步的 延遲 5秒,且 node.js 為簡單的單線程運行,不加入 cluster 等優化
const start = Date.now();while(Date.now() - start < 5000) { ; }return res.send();
那么,多個請求同時發起時,場景1
但通常在 node.js 很少真的碰到完全阻塞的同步等待 5 秒,如果是下列情況:
setTimeOut(() => { return res.send(); }, 5000);
那結果當然是場景2
至于 Java ,并發是多線程支撐的,在機能足夠的情況下,比如并發僅僅為3,可以粗略的視為是:場景2。當然由于涉及到線程開銷,在并發量上升之后,其內存的占用將遠超 node.js 的模型
實際上這也是為什么我們說 node.js 更加適合 IO密集 低運算 的場景??梢詤⒖嘉业牧硪粋€回答
標簽:
JavaScript
排行榜
