开篇词

--极客时间学习笔记

并发编程涉及到的知识多而杂,很多时候要站在更高的维度来看待问题。例如:java中synchronized,wait()/notify()相关知识晦涩难懂,但实际上这些不过是操作系统领域里管程模型的一种实现而已。

并发编程可以总结为三个核心问题:分工、同步、互斥。所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共享资源。

Java SDK并发包很大部分内容都是按照这三个维度组织的,例如Fork/Join框架就是一种分工模式,countDownLatch就是一种典型的同步方式,而可重入锁则是一种互斥手段。搞清楚并发编程的核心问题,再回头看Java SDK并发包,他只不过是针对并发问题开发出来的工具罢了。Java SDK并发包其余的一部分则是并发容器和原子类,属于辅助工具,其它语言里基本都能找到对应的。

人贵有志,学贵有恒!

原文地址:https://www.cnblogs.com/jixiegongdi/p/13992310.html