08 2019 档案
摘要:这是java高并发系列第32篇文章。 java环境:jdk1.8。 本文主要内容 1. 4种方式实现计数器功能,对比其性能 2. 介绍LongAdder 3. 介绍LongAccumulator 需求:一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。 我们来模拟50个线程,每个线程对计
阅读全文
摘要:在一个线程中需要获取其他线程的执行结果,能想到几种方式?结合这个需求,我们使用6种方式,来对之前学过的知识点做一个回顾,加深记忆。
阅读全文
摘要:这是java高并发系列第29篇。 环境:jdk1.8。 本文内容 1. 介绍常见的限流算法 2. 通过控制最大并发数来进行限流 3. 通过漏桶算法来进行限流 4. 通过令牌桶算法来进行限流 5. 限流工具类RateLimiter 常见的限流的场景 1. 秒杀活动,数量有限,访问量巨大,为了防止系统宕
阅读全文
摘要:这是java高并发系列第28篇文章。 环境:jdk1.8。 本文内容 1. 日志有什么用? 2. 日志存在的痛点? 3. 构建日志系统 日志有什么用? 1. 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务 2. 提取有用数据,做数据分析使用 本文主要讨论通过日志来快速定位并解
阅读全文
摘要:这是java高并发系列第26篇文章。 环境:jdk1.8。 本文内容 1. 了解JUC常见集合,学会使用 3. ConcurrentHashMap 4. ConcurrentSkipListMap 5. ConcurrentSkipListSet 6. CopyOnWriteArraySet 7.
阅读全文
摘要:这是java高并发系列第27篇文章。 开发环境:jdk1.8。 案例讲解 电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 1. 商品基本信息(名称、价格、库存、会员价格等) 2. 商品图片列表 3. 商品描述信息(描述信息一般是由富文本编辑的大文本信息) 数据库中我们用了
阅读全文
摘要:这是java高并发系列第25篇文章。 环境:jdk1.8。 本文内容 1. 掌握Queue、BlockingQueue接口中常用的方法 2. 介绍6中阻塞队列,及相关场景示例 3. 重点掌握4种常用的阻塞队列 Queue接口 队列是一种先进先出(FIFO)的数据结构,java中用 接口来表示队列。
阅读全文
摘要:java高并发系列第24篇文章。 环境:jdk1.8。 本文内容 1. 需要解决的问题 2. 介绍ThreadLocal 3. 介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式来引出 、`InheritableThreadLocal`,这样印象会深刻一些。
阅读全文
摘要:这是java高并发系列第23篇文章,环境:jdk1.8。 本文主要内容 1. JUC中的原子类介绍 2. 介绍基本类型原子类 3. 介绍数组类型原子类 4. 介绍引用类型原子类 5. 介绍对象属性修改相关原子类 预备知识 JUC中的原子类都是都是依靠 volatile 、 CAS 、 Unsafe
阅读全文
摘要:这是java高并发系列第22篇文章,文章基于jdk1.8环境。 本文主要内容 1. 基本介绍 2. 通过反射获取Unsafe实例 3. Unsafe中的CAS操作 4. Unsafe中原子操作相关方法介绍 5. Unsafe中线程调度相关方法 6. park和unpark示例 7. Unsafe锁示
阅读全文
摘要:这是java高并发系列第21篇文章。 本文主要内容 1. 从网站计数器实现中一步步引出CAS操作 2. 介绍java中的CAS及CAS可能存在的问题 3. 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 4. 使用java中的原子操作实现网站计数器功能 我们需要解决的问题 需求:我们开发了一个
阅读全文
摘要:这是java高并发系列第20篇文章。 本文内容 1. ExecutorCompletionService出现的背景 2. 介绍CompletionService接口及常用的方法 3. 介绍ExecutorCompletionService类及其原理 4. 示例:执行一批任务,然后消费执行结果 5.
阅读全文
摘要:这是java高并发系列第19篇文章。 本文主要内容 1. 介绍Executor框架相关内容 2. 介绍Executor 3. 介绍ExecutorService 4. 介绍线程池ThreadPoolExecutor及案例 5. 介绍定时器ScheduledExecutorService及案例 6.
阅读全文