什么样的业务场景适合用多线程,请举例?

asdf204687275


首先了解下什么是多线程吧!多线程就是“人海战术”,伴随着摩尔定律的失效(单核心的计算能力不能再成倍的增长,而改为横向扩展),CPU变为了多核心的模式,而每一个CPU在同一时间能处理一个线程,也就是说同一时间线程的执行数可以为CPU核心数(超线程不讨论)!效率为以前单核心的N倍!



JAVA这门编程语言,可谓是让多线程技术变得老生常谈,那么多线程使用在什么地方呢?

1,web服务器:web服务器的请求数往往是非常大的,而且自从有了HTTP1.1之后,TCP默认是长连接模式,一般像tomcat这样的服务器会开多个线程保持与客户端的连接,所以需要多线程!

2,异步调用:比如电商平台,在主线程处理完订单等主业务之后,需要发短信,邮件等非主要的业务代码,这个时候可以新起一个线程,异步调用,而主线程可以直接返回,避免长时间的等待!

3,上传下载大文件处理:比如迅雷,如果是单线程,那么同一时候,它就只能写一个下载任务的数据,但是多线程就可以同时进行更多任务!


4,分布式计算:比如1+2+...+100000,你可以分为十个任务,然后汇总即可,比单线程可以省大约9/10的时间!

还有更多场景可以适用于多线程环境,具体问题具体分析!

但是多线程其实绝对是魔鬼,从jdk中的并发包就可见端倪,不管是synchronize,lock,threadlocal,线程池,countbatchdown,forkjoin,future,callable,valatile哪一个多线程的关键字,都可以让我们JAVA编程人员生不如死!

只能说不到万不得已,不要盲目的使用多线程,比如redis就能靠着单线程一枝独秀,linux之父Linus Tonvard说过:忘掉那该死的并发吧!可见这个多线程多么的不可取,只是如果我们JAVA程序员如果不会多线程,应该就失业了吧!

反正不管多线程有多痛苦,以后我还是会发多线程的技术分享的,敬请关注!


哎哟JAVA不错哦


实际题主主要考虑的是并发编程的问题,实际的业务开发中,会或多或少的接触一些这样的并发编程的场景。本人也从事软件开发多年,有一定的并发编程经验,正好借此机会将自己的遇到的一些场景总结一下:

首先,并发编程可以说是Java高级研发人员需要掌握的一项技能,并发编程是一项非常复杂的编程能力。

场景一:B/S或C/S模式下。一个服务端对应着数量众多的用户,此种场景下适合使用并发编程。将每个用户的操作可以看做是一个独立的任务,多个用户可以看做是多个独立的任务,这样的场景就是个并发编程。此种场景下适合在服务端创建线程池执行用户的任务。

场景二:单线程的执行能力已经到达瓶颈,只有做并发编程,才可以让程序的执行速度得到质的提高。此种情况下,适合加入并发编程,通过并发编程大大提高程序的执行速度。

场景三:仿真模拟。在做测试的时候,模拟单一用户无法达到要求,需要做借助并发编程模拟多用户时,可以使用并发编程。

场景四:异步处理。比如说,服务端在接收客户端的消息进行处理时,此时处理非常复杂,耗费时间长,可以借助并发编程,启动新的线程进行后续的耗时业务处理,更快的响应用户,让用户得到更好的体验。

当然,想处理好并发编程也并给一日之功,需要不断的实践总结。

本人具有多年的java开发经验,熟悉多种框架,熟悉网络编程,熟悉java安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!


分享到:


相關文章: