java线程里面调其他微服务接口_java现在都是微服务了,为什么还要强调java多线程的知识?...

看大家都是直接怼你的,却不说原因,还是我来说说吧。

synchronized 为什么在分布式环境中肯定是不能用的呢?

比如,我这个微服务,提供的是一个文件转换操作,将 doc 文件转换成 pdf 文件返回给调用者,而转换操作调用的系统的 dll ,通过调用 ms office 的功能实现的。那么这个时候,这个转换方法是否就可能要用到 synchronized  来强制串行化转换呢?为什么要串行化转换?因为 java 调用系统级功能和服务,是不能调用太多的,如果同时有 10 来个请求过来,我都调用这个 dll ,很可能出现系统进程太多(一般调用 dll 都是启动系统进程的),相互影响,在转换完成未正确关闭资源的情况。所以,我也懒得测试服务器到底多少个请求时能正确处理,直接使用  synchronized 标识方法,让其串行化执行。这是很常规的操作,其它一些场景类似。

再举个例子,我这个微服务是对数组内对象的某一项进行求和运算的(实际中可能不存在这样的东西还调用微服务去实现,这儿仅仅举例),那么,调用方丢给你一个数组,你要怎么样快速的计算出结果呢?没有多线程基础,你肯定想不到 forkjoin 吧?人家对于密集计算,给个32核心的cpu,只花费1秒就返回结果了,你却要花32秒才能返回结果,始终在调用其中一个核心在计算,你还能说自己写的代码没毛病?

综上,微服务只是对于业务场景的高层抽象及模块化处理,对于具体编写代码上,该使用线程的时候照样得使用。对于实际编码实现细节性业务逻辑上,你的代码并不会因为使用了微服务就能多高大上,没有丰富的多线程知识,写的该是垃圾还是垃圾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值