
并发编程的艺术
wozaizhe.55
一个入门程序员的自我救赎
展开
-
Java并发编程的艺术:(11) 并发编程实战
文章目录生产者和消费者模式多生产者和多消费者场景线程池与生产消费者模式线上问题定位性能测试异步任务池 生产者和消费者模式 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一原创 2020-11-08 20:01:50 · 327 阅读 · 0 评论 -
Java并发编程的艺术:(10) Executor 框架(二)
文章目录原创 2020-11-02 00:28:27 · 106 阅读 · 0 评论 -
Java并发编程的艺术:(10) Executor 框架(一)
文章目录Executor 框架简介ThreadPoolExecutor 简介任务任务的执行异步计算的结果参考 Executor 框架简介 Executor 框架是Java5之后引进的,在Java 5之后,通过 Executor 来启动线程比使用 Thread 的 start 方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免 this 逃逸问题。 this逃逸是指在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误。 T原创 2020-10-25 23:54:03 · 127 阅读 · 0 评论 -
Java并发编程的艺术:(9) Java 中的线程池
文章目录线程池的实现原理线程池的使用线程池的创建向线程池提交任务关闭线程池 Java 中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理使用线程池能够带来 3 个好处。 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,原创 2020-10-12 22:22:59 · 137 阅读 · 1 评论 -
Java并发编程的艺术:(8) Java 中的并发工具类
文章目录等待多线程完成的 CountDownLatch同步屏障 CyclicBarrierCyclicBarrier 简介CyclicBarrier 的应用场景CyclicBarrier 和 CountDownLatch 的区别控制并发线程数的 Semaphore线程间交换数据的 Exchanger参考 等待多线程完成的 CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作。 比如这样一个需求:我们需要解析一个 Excel 里多个 sheet 的数据,此时可以考原创 2020-10-11 16:12:55 · 115 阅读 · 0 评论 -
Java并发编程的艺术:(7) Java 中的 13 个原子操作类
文章目录原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类 原子更新基本类型类 原子更新数组 原子更新引用类型 原子更新字段类原创 2020-09-27 21:21:20 · 184 阅读 · 0 评论 -
Java并发编程的艺术:(6)Java 并发容器和框架之 Fork/Join 框架
文章目录什么是 Fork/Join 框架工作窃取算法Fork/Join 框架的设计使用 Fork/Join 框架Fork/Join 框架的异常处理Fork/Join 框架的实现原理参考 什么是 Fork/Join 框架 工作窃取算法 Fork/Join 框架的设计 使用 Fork/Join 框架 Fork/Join 框架的异常处理 Fork/Join 框架的实现原理 参考 《Java 并发编程的艺术》 ...原创 2020-09-20 22:52:50 · 121 阅读 · 0 评论 -
Java并发编程的艺术:(6)Java 并发容器和框架之 Java 中的阻塞队列
文章目录什么是阻塞队列Java 里的阻塞队列阻塞队列的实现原理参考 什么是阻塞队列 阻塞队列是一个支持两个附加操作的的队列。这两个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满; 支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用语生产者和消费者的场景,生产者时向队列添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。 在阻塞队列不可用时,这两个附原创 2020-09-13 18:09:49 · 118 阅读 · 0 评论 -
Java并发编程的艺术:(6)Java 并发容器和框架之 ConcurrentLinkedQueue
文章目录ConcurrentLinkedQueue 的结构入队列出队列参考 在并发编程中,有时候需要使用线程安全的队列。如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队使用不同的锁)等方式来实现。非阻塞的实现方式则可以使用循环 CAS 的方式来实现。 ConcurrentLinkedQueue 是一个机遇链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,他会添原创 2020-09-06 23:10:03 · 181 阅读 · 0 评论 -
Java并发编程的艺术:(6)Java 并发容器和框架之 ConcurrentHashMap
文章目录ConcurrentHashMap 的实现原理与使用为什么要使用 ConcurrentHashMap线程不安全的 HashMap效率低下的 HashTableConcurrentHashMap 的锁分段技术可有效提升并发访问率ConcurrentHashMap 的结构ConcurrentHashMap 的操作get 操作put 操作size 操作参考 Java 语言内置了非常多的并发容器和框架,相比其他语言进行并发编程时非常方便。 ConcurrentHashMap 的实现原理与使用 Concurr原创 2020-08-29 23:40:44 · 147 阅读 · 0 评论 -
Java并发编程的艺术:(5)Java中的锁(二)
文章目录读写锁LockSupport 工具Condition 接口 读写锁 LockSupport 工具 Condition 接口原创 2020-08-23 23:15:09 · 138 阅读 · 0 评论 -
Java并发编程的艺术:(5)Java中的锁(一)
文章目录Lock 接口队列同步器重入锁 Lock 接口 队列同步器 重入锁原创 2020-08-16 23:35:54 · 151 阅读 · 0 评论 -
Java并发编程的艺术:(4)Java 并发编程基础
文章目录线程简介上下文切换如何减少上下文切换启动和终止线程线程间通信线程应用实例参考 线程简介 上下文切换 CPU 通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。 如何减少上下文切换 减少上下文切换的方法有无锁并发编程、CAS 算法、使用最少线程和使用协程。 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时, 启动和终原创 2020-08-09 22:30:46 · 160 阅读 · 0 评论 -
Java并发编程的艺术:(3)Java 内存模型三
文章目录happens-before双重检查锁定于延迟初始化Java 内存模型综述 happens-before 双重检查锁定于延迟初始化 Java 内存模型综述原创 2020-08-02 22:18:05 · 122 阅读 · 0 评论 -
Java并发编程的艺术:(3)Java 内存模型二
快速索引volatile 的内存语义锁的内存语义final 域的内存语义 volatile 的内存语义 锁的内存语义 final 域的内存语义原创 2020-07-26 22:14:40 · 134 阅读 · 0 评论 -
Java并发编程的艺术:(3)Java 内存模型一
快速索引 《Java 并发编程的艺术》第三章 Java 内存模型这章内容较多将会分三次进行学习。原创 2020-07-19 22:29:18 · 164 阅读 · 0 评论 -
Java并发编程的艺术:(2) 并发机制的底层实现原理
快速索引volatile 的应用synchronized 的实现原理与应用原子操作的实现原理 并发带来最大的问题为数据同步问题,多数资源是线程共享的。如何保证每个线程访问的数据都是最新且每个线程对数据的加工都能够被其它线程所感知,这是并发的核心所在。《Java并发编程的艺术》一书中介绍了Java 中三种机制机制分别为 volatile、synchronized和原子操作来进行 volatile 的应用 synchronized 的实现原理与应用 原子操作的实现原理 ...原创 2020-07-12 23:19:12 · 242 阅读 · 1 评论 -
Java并发编程的艺术:(1) 并发编程的挑战
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2020-07-05 00:02:32 · 309 阅读 · 0 评论