并发编程—学习攻略

并发编程的知识点多且又杂,并发中的概念很多并且技术点也很凌乱,看了很多有关并发的书籍,大牛写的博客等,不能很好的掌握学习知识的方法和技巧,花费了时间和精力,还是不能很好地掌握并发的知识,但那么如何才能学好并发编程呢?

其实也很简单,只要从两个方面一下就可以突破了。一个是“跳出来、看全景”,一个是“钻进去,看本质”。

一、跳出来,看全景

学习知识最忌讳的就是“盲人摸象”,只看局部,而没有先看到全局。有些人还没有把最基本的什么是并发编程,并发编程的本质是什么,上来就撸源码,看的是晕头转向,从而感慨一句“并发编程真难”,就搁置了。

并发编程的概念多而散: 线程安全、锁、同步、异步、互斥、死锁、活锁、阻塞队列、并发队列、信号量等等,如果没有先搞清楚并发的全景本质,而是一个一个的去扒知识点,更甚者直接去撸源码,那么很可能搞了好久还是搞不清楚。

那么并发编程的全景又是什么呢?

说白了并发编程领域可以简单的抽象为三个核心问题:分工、同步和互斥。

人们为了追求性能,把CPU的利用率发挥到极致,所有就把大任务拆分为一个一个的小任务(分工)、各个任务之间可能又存在依赖(同步)、为了保证数据的正确性多个小任务之间对共享变量的修改有需要进行保护(互斥)。

1、分工

所谓分工,类似于现实中一个组织完成一个项目,项目经理需要拆分任务,安排合适的成员去完成。在并发编程领域,你就是项目经理,线程就是项目组成员。任务分解和分工对于项目成败非常关键,不过在并发领域里,分工更重要,它直接决定了并发程序的性能。

结合到Java中就有JDK并发包中的 Executor、Fork/Join、Future等。

2、同步

所谓同步就是你分好工后,各个成员做自己的任务,但是成员负责的模块可能存在依赖,所有需要沟通交流,协作完成一项工作。在并发编程领域里的同步,主要是指线程间的协作。线程之间的协作本质上可以描述为“当某个条件不满足时,线程需要等待,当某个条件满足时,线程需要被唤醒执行”。

结合到Java SDK就有 CountDownLatch、CyclicBarrier、Phaser、Exchanger等。

3、互斥

映射到现实世界中就类似于蹲坑,同一个坑同一时间只能有一个人占有,为了防止一个人占有坑位后,其他人在占有,那么先占有的人就会把门锁上。所在并发编程领域就是同一时刻,只允许一个线程访问共享变量,那么实现互斥的核心技术也是加锁。随时加锁解决了安全问题,但同时也带来了性能问题,那如何保证安全的同时又尽量提高性能呢?JDK里有提供了 ReadWriteLock、StampedLock、还有就是CAS无锁技术。

二、钻进去,看本质

跳出来看到全景后,还需要“钻进去”,深入理解,找到本质。探索每个知识点,掌握其实现本质。Java 语言里的并发技术基本都是有理论基础的,并且这些理论在其他编程语言里也有类似的实现。所以我认为,技术的本质是背后的理论模型。不但要知其然,还要知其所以然。

三、总结

学习并发编程,不能上了就看并发包,撸源码,这样知识点太多太杂,很容易放弃,首先是跳出来抽象出其全景,掌握其全集后,在钻进去抠细节,掌握其实现原理和本质。


参考资料:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容