我是靠谱客的博主 懵懂镜子,最近开发中收集的这篇文章主要介绍java io密集型任务_为什么说node.js相比java更利于IO密集型应用呢?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JavaScript是单线程执行的,不适合执行耗时很长的cpu操作

这里说的cpu操作是指计算型任务,这类任务是要阻塞js的执行线程的。

举个例子:假设有一个耗时很长的计算型任务在执行,同时有一个setTimeout的回调函数到时间了也要执行,那么这个回调就要等着你的计算型任务执行完成后再执行。这可能会导致你的回调函数的执行时间并不是你预期的时间,从而有可能导致程序逻辑出错。在node.js web服务项目里,这可能会导致你的服务没有能力再接收新的请求。

所以它不适合处理cpu密集型任务,单线程就是同一时刻只能做一件事。

cpu操作和io操作不一样,io操作的大部分工作不是js完成的,比如你把一段文本写入某个文件,js只要启动这个写入操作即可,实际写入工作是node.js的其他部分完成的,写入完成后再发信号给js的执行线程,让它执行写入文件的回调函数。浏览器发起ajax请求也一样,实际请求工作是浏览器完成的,不是js执行线程完成的

这类异步操作是多线程的,是js执行线程和c线程搭配干活的。

传统语言搞多线程要考虑很多事情,比如线程同步,信号量,死锁什么的,但js和其运行环境都把这些事给你搞定了,所以你甚至不知道这些任务是多线程完成的都没问题。

这也许就是他善于做这类工作的原因吧

以上,希望你能喜欢!

最后

以上就是懵懂镜子为你收集整理的java io密集型任务_为什么说node.js相比java更利于IO密集型应用呢?的全部内容,希望文章能够帮你解决java io密集型任务_为什么说node.js相比java更利于IO密集型应用呢?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部