1 什么是并发编程
所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。
2 为什么我们要学习并发编程?
最直白的原因就是因为面试需要,大厂的 Java 岗的并发编程能力属于标配。
而在非大厂的公司,并发编程能力也是面试的加分项,而且工作时善用并发编程则可以极大提升程序员在公司的技术话语权。
3 为什么需要并发编程
3.1 加快响应用户的时间
比如我们使用的迅雷下载,都喜欢多开几个线程去下载,为什么呢?就是因为多个线程下载快。
我们在程序开发的时候更应该如此,特别是互联网项目,网页的响应时间若提升1s,如果流量大的话,就能增加不少转换量。做过高性能 web 前端调优同学的都知道,要将静态资源地址用两三个子域名去加载,为什么呢?就是因为每多一个子域名,浏览器在加载页面的时候就会多开几个线程去加载页面资源,提升网站的响应速度。
3.2 使代码模块化,异步化,简单化
例如我们实现电商系统,下订单和给用户发送短信、邮件就可以进行拆分, 将给用户发送短信、邮件这两个步骤独立为单独的模块,并交给其他线程去执行。 这样既增加了异步的操作,提升了系统性能,又使程序模块化,清晰化和简单化。
多线程应用开发的好处还有很多,在日常代码编写过程中可以慢慢体会它的魅力。
3.3 充分利用 CPU 的资源
目前市面上 CPU 的内核几乎都是多核的,多核下如果还是使用单线程的技术做思路明显就 out 了,无法充分利用 CPU 的多核特点。如果设计一个多线程的程序的话,那它就可以同时在多个 CPU 的多个核的多个线程上运行,可以充分地利用 CPU 资源,减少 CPU 的空闲时间,充分发挥它的运算能力,提高并发量。
比如我们平时上班坐地铁,很多人坐长线地铁的时候都在认真看书,而不是为了坐地铁而坐地铁,而不是到家了再去看书,这样你的时间就相当于有了两倍。这就是为什么有些人时间很充裕,而有些人老是说没时间的一个原因,工作也是这样,有的时候可以并发地去做几件事情,充分利用我们的时间,CPU 也是一样,也要充分利用。
当然有的同学可能会有疑问,单核 CPU 呢?单核 CPU 一样可以利用到并发编程的好处吗?当然可以,用我们平时常用的 微信之类的聊天程序来举例,当我们用微信聊天时,其实程序要做好几件事,比如:接受我们的键盘输入,把输入的信息通过网络发给对方,接受对方通过网络发来的信息,把对方的信息显示在屏幕 上,很多的时候,这些事情是可以同时发生的。如果程序不能利用并发编程同时处理,我们和对方的通话就只能一问一答的方式进行了。