Java并发编程(07)--锁
锁在并发编程中可以说是必须使用的一种资源保护技术, 而且是一种及其庞大且复杂的技术, 随着计算机学科的发展, 锁技术同样的在不断的发展和优化。 作为一个开发者, 当然无法直接深入到CPU的最底层去理解锁的原理, 但是通过一些其它的手段可以间接的理解锁的原理以及运行机制。 本篇文章进行一个现阶段的总结, 整理一下所学的全部关于锁的知识, 涉及的编程语言包括Python和Java, 应用包括MySQL以及Redis, 如有错误, 还请指正。 »
锁在并发编程中可以说是必须使用的一种资源保护技术, 而且是一种及其庞大且复杂的技术, 随着计算机学科的发展, 锁技术同样的在不断的发展和优化。 作为一个开发者, 当然无法直接深入到CPU的最底层去理解锁的原理, 但是通过一些其它的手段可以间接的理解锁的原理以及运行机制。 本篇文章进行一个现阶段的总结, 整理一下所学的全部关于锁的知识, 涉及的编程语言包括Python和Java, 应用包括MySQL以及Redis, 如有错误, 还请指正。 »
在整理下一篇文章, 有关锁的知识之前, 有一个无论如何都绕不开的话题:AbstractQueuedSynchronizer, 队列同步器, 通常简称AQS。 »
本来是一个对Java并发编程的一个学习和总结专题, 虽然Python有GIL的存在, 但不能否认其线程池的实现非常的简洁而优雅, 此外温故而知新, 通过理解其它语言的线程池也能够加深我们对Java线程池的理解。 »
抛开Java自己封装的newFixedThreadPool, newCachedThreadPool等工厂线程池方法, 最核心的就是ThreadPoolExecutor的配置, 包括线程池的大小, 工作队列, 空闲线程存活时间以及饱和策略。 »
在前面的一章整理并发编程的一些基础内容, 包括任务的创建, 任务的执行, 线程池的简单使用, 加入一个线程以及守护线程和线程同步。 基本上涵盖了绝大多数的基础内容, 在本章中学习任务的取消与异常处理。 »
在继续学习Java并发编程之前, CPU的执行过程以及CPU缓存一致性问题是必须要了解的, 这一部分的内容是Java并发设计的基石, 对后续内容的了解也有非常大的帮助。 »
打了2年多的Python代码, 大大小小的项目也做了一些, 代码规范和并发效率一直以来是比较头疼的问题。 因为GIL全局解释器锁的存在使得Python程序员永远只能使用单核, 并且在锁的保护下许多的效率问题都被掩盖。 在学习了Java之后, 对其并发模块的设计深感惊艳, 比如ConcurrentHashMap的分段锁实现, volatile关键字保证变量的可见性, 所以在这里对其进行整理并进一步加深理解。 »