【并发编程】为什么要学习并发编程

一、前言

       并发编程最早的应用领域就是操作系统的实现。并发编程的第一原则,那就是不要写并发程序。这个原则很早之前是行得通的,那个时候多核服务器还是一种奢侈品,系统的并发量还很低。借助数据库和类似tomcat这种中间件,我们基本上不用写并发程序。或者说,并发问题基本上都被中间件和数据库解决了。 

       最近几年,并发编程已经慢慢成为一项必备技能。这主要是硬件的驱动以及国内互联网行业的飞速发展决定的。现在64核的服务器已经飞入寻常百姓家。大型互联网厂商的系统并发量轻松过百万。传统中间件和数据库已经不能为我们遮风挡雨,反而成了瓶颈所在。并发编程最近几年成为非常热门的领域,人才稀缺。很多同学并发编程会成为瓶颈,虽然并发相关的类库也熟悉,却总是写不出正确、高效的并发程序。可能是某个地方有盲点,忽略了一些细节,但恰恰是这些细节决定了程序的正确性和效率。这些盲点涉及到了操作系统或者涉及到了硬件。

二、深入

       例如,java里synchronized、wait()/notify()相关的知识很琐粹。但实际上synchronized、wait()/notify()不过是操作系统领域里管程模型的一种实现而已。java SDK并发包里的条件变量Condition也是管程里的概念。synchronized、wait()/notify()、条件变量这些知识如果单独理解,自然是管中窥豹。但是如果站在管程这个理论模型的高度,会发现这些知识很简单。

       并发编程可以总结为三个核心问题:分工同步互斥

       所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作。互斥则是保证同一时刻只允许一个线程访问共享资源。java  SDK 并发包很大部分内容都是按照这三个维度组织的,例如Fork/Join框架就是一种分工模式,CountDownLatch就是一种典型的同步方式,而可重入锁则是一种互斥行为

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值