Maison > Questions et réponses > le corps du texte
Supposons queun programme de nœud soit installé sous un seul cœurCPU. Le programme est très simple. Lorsqu'une requête arrive, le résultat est renvoyé avec un délai de 5 secondes (il est compréhensible que 5s). la synchronisationfait quelque chose)
Lorsque 3 requêtes arrivent en même temps, quel scénario sera le résultat :
Scénario 1 : La première requête obtient le résultat après 5 secondes, les deuxième et troisième requêtes obtiennent le résultat après 10 s et 15 s
Scénario 2 : Toutes les requêtes obtenez des résultats après 5 secondes
Quel genre de scénario cela sera-t-il si nous passons à Java+Tomcat ? Merci à tous !
PHP中文网2017-05-17 10:10:00
S'il est synchrone
, le délai est de 5 secondes et node.js est une simple opération monothread, sans ajout de cluster et autres optimisations同步的
延迟 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
rrreee
Mais généralement dans node.js, il est rare de rencontrer une
attente de synchronisation de 5 secondes
complètement bloquée, si la situation suivante se produit : rrreee
Le résultat est bien sûr leScénario 2
🎜
🎜Quant à Java, la simultanéité est prise en charge par le multi-threading. Lorsque les performances sont suffisantes, par exemple, la simultanéité n'est que de 3, cela peut être grossièrement considéré comme : Scénario 2. Bien sûr, en raison de la surcharge du thread impliquée, après l'augmentation de la concurrence, son utilisation de la mémoire dépassera de loin le modèle node.js🎜
🎜En fait, c'est pourquoi nous disons que node.js est plus adapté aux scénarios gourmands en E/S et nécessitant peu de calcul. Vous pouvez vous référer à mon autre réponse🎜