管程作为一种解决并发问题的模型,是继信号量模型之后的一项重大创新。很多语言都支持管程,搞懂管程,对学习
并发编程有很大帮助。然后很多人急于学习Java并发编程技术,却忽略了技术背后的理论和模型,而理论和模型却
往往比具体技术更为重要。
并发编程可以总结为三个核心问题:分工、同步、互斥。
分工指的是如何高效地拆解任务并分配给线程。
同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共享资源。
Java SDK并发包很大部分内容都按照这三个维度组织,Fork/Join框架是一种分工模式,CountDownLatch是一种典型的同步方式,可重入锁是一种互斥手段。
Java SDK并发包其余一部分则是并发容器和原子类。
跳出来,看全景
我们需要从单一的知识和技术中“跳出来”, 高屋建瓴地看并发编程,首要之事就是建立起一张全景图。
并发编程领域可以抽象为三个核心问题:分工、同步、互斥
钻进去,看本质
概念和结论是怎么出来的,它们是用来解决什么问题的。工程上对的解决方案,一定要有理论作为基础。学习并发编程的过程中,要探索背后的理论是什么。技术的本质是背后的理论模型。