java能实现go语言的协程吗?

发布于 2022-07-20 15:15:54
java能实现go语言的协程吗?

查看更多

关注者
0
被浏览
583
7 个回答
yydsflask
yydsflask 2022-07-20
This guy hasn't written anything yet

能不能的答案肯定是能,但是会不会实现估计得走很长,协程的设计到现在已经被很多语言支持,go里面gotoutine,python里面的的async,但你会发现除了go其他语言中的协程玩起来都会有很多的小坑,协程里面很重要的一点就是不能被阻塞,直接就会影响到协程调度,但一门语言发展超过十年以上,历史包袱可想而知,又不能断代更新,所以在这方面新兴得语言相对更好一些。

yydsflask
yydsflask 2022-07-20
This guy hasn't written anything yet

已经有第三方的实现quasar,jdk的协程loom项目也在进行中估计3到5年可以release,如果现在想用到可以考虑已经release的kotlin coroutine ,推荐kotlin coroutine +vertx 是一个不错的搭配

yydsflask
yydsflask 2022-07-20
This guy hasn't written anything yet

Java的进化版Kotlin已经实现了协程,Java自身去实现协程的可能性不大,Java这么语言已经太庞大太重了,而且大多数开发人员和系统不会用或者说不敢用它新特性,增加协程的意义不大。

laowang
laowang 2022-07-20
This guy hasn't written anything yet

操作系统就是用C/C++写的。 C/C++能够直接调用系统接口。 你知道Java为什么要JVM才能跑吗?因为他不能直接调用系统接口。 所以C/C++不需要虚拟机。 但是因为操作系统的不同,接口调用方式不同。所以C/C++不能跨平台。

ipython
ipython 2022-07-20
This guy hasn't written anything yet
GO语言会取代JAVA吗
最近几年GO语言非常流行,我们查询一线互联网大厂的招聘需求,如腾讯和头条,GO语言的招聘岗位数量已经跟JAVA不相上下了,那么为啥大公司这么推崇GO语言呢。
GO语言的优势:开发效率高,支持高并发,语言简单易上手,只有25个关键字,框架也比较少,学习难度较低。同时,GO语言编译速度快,运维部署简单,不需要额外安装JDK这样的运行环境,构建好后只需做一个执行文件即可。
GOROUTINE协程,他比线程更轻量级,一个进程下面有很多线程,一个线程可以有上千个协程。协程与线程主要区别,协程不被CPU调度,而是由Golang中的调度器调度,而线程则是由CPU调度所以可以同时创建很多协程并发运行,并发量上限会远远超过JAVA。
GO的运算性能是JAVA的1.5倍左右,运行空间是JAVA的几十分之一,启动时间是JAVA的几十分之一,并发量是JAVA的上千倍,性能可以说是远超JAVA了。
当然,JAVA在互联网的应用领域广泛,一时之间不可能被GO完全取代,作为一个程序员,还是很有必要学习一下这门语言的。
对于这个问题你怎么看,欢迎在留言区给我留言讨论,我是ELEVEN老师,微软MVP,关注我,带你进阶架构师!#好平台好讲师##程序员#
yydsflask
yydsflask 2022-07-20
This guy hasn't written anything yet
这位员工的一句话又引起了广大程序员的热议,即使在上班时间…

某网友直言:go语言代码太low了,写起来没一点技术含量。go流行的原因就是因为门槛足够低,可以招很多低代码水平码工进来,降低人力成本!

瞬间评论区炸开了锅:
网友A:说得好像java就不low似的,学个语言都能有优越感,那都去写汇编算了

网友B:是的,一个快要被取代的docker,一个只用在容器编排的k8s,哪有spring全家桶厉害呀。一个只能接受几十万协程的程序如何与线程池相比?一个基准测试工具暴露太多go方面的错误。一个err机制让我们需要自己解决问题而不是抛掉问题了事根本没让我们开发的爽。综上,go和java的差距不是一点。综上,go根本比不上go[呲牙]

网友C:一个毕业生可以用轻松go写一个qps 几w/s的服务,你用你所谓门槛高的语言写多久?语言的门槛高,只是因为设计的不周全,时代在发展,陈旧的语言不适用了,还自以为自己很美,这种活该被优化掉。

存在即合理,流行不流行主要还是看当下市场需求量有多大,就像当年Web时代如日中天的PHP!祖师爷推出了Golang,自然有其道理。编程语言永远没有好坏之分,适合自己业务需求最重要。程序员,千万不要把自己定义为XX语言工程师。

最后附一张Go代码。
似乎槽点最多的永远是if err != nil这句。
yydsflask
yydsflask 2022-07-20
This guy hasn't written anything yet
讲性能GO C# Java其实就是一个级别的,而GO还是有优化空间的,Java和C#基本快触及天花板了,所以Java和.NET也在往AOT发展,AOT有缺点也有优点,适合当下的云原生,占用内存很低,不需要背个氧气瓶可哪走,自然也就很轻了。

理论上JIT能比AOT优化得更好, 所以我不怎么看好Java和.NET的AOT。AOT编译不太敢做循环展开,接口调用内联之类的JIT看家本领。用AOT不是为了最高性能,而是启动速度,最小发布包和抗反编译。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览