首先了解下什么是多线程吧!多线程就是“人海战术”,伴随着摩尔定律的失效(单核心的计算能力不能再成倍的增长,而改为横向扩展),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程序员如果不会多线程,应该就失业了吧!
反正不管多线程有多痛苦,以后偶还是会发多线程的技术分享的,敬请关注!