01.并发编程简介

1 什么是并发编程

        所谓的并发编程是指多个线程或进程同时执行的编程模式。在并发编程中,程序的执行路径不是线性的,而是分成多个同时执行的路径,这些路径之间可能会相互影响和竞争

        并发编程的底层原理是基于计算机系统中的并发性,通过多线程、进程、协程等方式实现。计算机系统中有多个CPU核心和内存单元,可以同时处理多个任务。并发编程可以将计算机系统的资源充分利用,提高程序的性能和效率。

        并发编程的主要挑战是如何处理并发访问共享资源时的竞争和冲突问题,如死锁、活锁、饥饿等。为了避免这些问题,需要采用一些并发控制机制,如互斥锁、信号量、条件变量等。

        在Java中,可以通过synchronized关键字和Lock接口来实现并发控制。synchronized关键字通过对象的锁机制来实现互斥和同步,而Lock接口则提供了更加灵活和高级的并发控制机制。

        除了使用并发控制机制,还可以通过线程池、任务队列等方式来实现并发编程。线程池可以管理线程的生命周期和资源,避免了线程的频繁创建和销毁。任务队列可以将任务进行排队,从而实现任务的异步处理和调度。

        并发编程对程序员的编程能力和调试能力要求较高,需要处理复杂的并发访问问题和线程间的交互和通信。同时,由于并发编程存在一些隐含的问题和风险,如死锁、竞争条件、资源泄漏等,因此需要谨慎设计和实现。

2 为什么我们要学习并发编程?

  1. 最直白的原因,因为面试需要,大厂的 Java 岗的并发编程能力属于标配。
  2. 在非大厂的公司,并发编程能力也是面试的加分项,而工作时善用并发编程则可以极大提升程序员在公司的技术话语权。

3 为什么需要并发编程

1.1 加快响应用户的时间

        比如我们使用的迅雷下载,都喜欢多开几个线程去下载,为什么呢?就是因为多个线程下载快。

        我们在程序开发的时候更应该如此,特别是互联网项目,网页的响应时间若提升1s,如果流量大的话,就能增加不少转换量。做过高性能 web 前端调优同学的都知道,要将静态资源地址用两三个子域名去加载,为什么呢?就是因为每多一个子域名,浏览器在加载页面的时候就会多开几个线程去加载页面资源,提升网站的响应速度。

1.2 使代码模块化,异步化,简单化

        例如我们实现电商系统,下订单和给用户发送短信、邮件就可以进行拆分, 将给用户发送短信、邮件这两个步骤独立为单独的模块,并交给其他线程去执行。 这样既增加了异步的操作,提升了系统性能,又使程序模块化,清晰化和简单化。

        多线程应用开发的好处还有很多,在日常代码编写过程中可以慢慢体会它的魅力。

1.3 充分利用 CPU 的资源

        目前市面上 CPU 的内核几乎都是多核的,多核下如果还是使用单线程的技术做思路明显就 out 了,无法充分利用 CPU 的多核特点。如果设计一个多线程的程序的话,那它就可以同时在多个 CPU 的多个核的多个线程上运行,可以充分地利用 CPU 资源,减少 CPU 的空闲时间,充分发挥它的运算能力,提高并发量。

        比如我们平时上班坐地铁,很多人坐长线地铁的时候都在认真看书,而不是为了坐地铁而坐地铁,而不是到家了再去看书,这样你的时间就相当于有了两倍。这就是为什么有些人时间很充裕,而有些人老是说没时间的一个原因,工作也是这样,有的时候可以并发地去做几件事情,充分利用我们的时间,CPU 也是一样,也要充分利用。

        当然有的同学可能会有疑问,单核 CPU 呢?单核 CPU 一样可以利用到并发编程的好处吗?当然可以,用我们平时常用的 微信之类的聊天程序来举例,当我们用微信聊天时,其实程序要做好几件事,比如:接受我们的键盘输入,把输入的信息通过网络发给对方,接受对方通过网络发来的信息,把对方的信息显示在屏幕 上,很多的时候,这些事情是可以同时发生的。如果程序不能利用并发编程同时处理,我们和对方的通话就只能一问一答的方式进行了。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值