随笔分类 - 01——Java并发
摘要:1.并发编程三大特性——原子性、可见性、有序性 1).原子性(Lock、synchronized可以保证原子性,volatile无法保证原子性) 原子性是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 2).可见性(volatile可保证可见性,synchro
阅读全文
摘要:在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。 1、原子性 即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,
阅读全文
摘要:目录 AQS 重入锁ReentrantLock 1.可重入实现原理 1. 锁的获取 2. 锁的释放 2.公平锁与非公平锁实现原理 读写锁ReadWriteLock 什么是读写锁 1.读写状态的设计 2.写锁的获取与释放 2.1写锁的获取 2.2写锁的释放 3.读锁的获取与释放 3.1读锁的获取 3.
阅读全文
摘要:目录 综述 Lock接口 1.什么是Lock接口 2.与synchronized的区别 3.Lock接口源码 4.如何使用,以及注意事项 可重入锁ReentrantLock 1.可重入锁ReentrantLock 什么是可重入锁? 什么是公平锁,非公平锁? 2.如何使用 公平锁与非公平锁测试对比 3
阅读全文
摘要:目录 1.LinkedBlockingQueue介绍 1.1BlockingQueue接口 1.2LinkedBlockingQueue 1.3LinkedBlockingQueue原理与数据结构 2.LinkedBlockingQueue源码分析 2.1创建 2.2put方法 2.3take方法
阅读全文
摘要:目录 1.DelayQueue介绍 2.DelayQueue源码分析 2.1领导者/追随者(Leader/Follower)模式 2.1.1半同步/半异步(Half-Sync/Half-Async)模式 2.1.2领导者/追随者(Leader/Follower)模式 2.2创建 2.3put方法 2
阅读全文
摘要:目录 1.ArrayBlockingQueue介绍 1.1BlockingQueue接口 1.2ArrayBlockingQueue 2.ArrayBlockingQueue源码分析 2.1创建 2.2生产者消费者模型 2.2.1生产者生产元素——put方法元素进队 2.2.2消费者消费元素——ta
阅读全文
摘要:综述 JDK从1.5开始提供了java.util.concurrent.atomic包。 通过包中的原子操作类能够线程安全地更新一个变量。 包含4种类型的原子更新方式:基本类型、数组、引用、对象中字段更新。 atomic包中的原子操作类基本上内部都是使用Unsafe类实现的,原子更新的实质其实就是获
阅读全文
摘要:Executor框架简介 Java的线程既是工作单元,也是执行机制。从JDK5开始,把工作单元和执行机制分离开来。 Executor框架由3大部分组成 任务。 被执行任务需要实现的接口:Runnable接口或Callable接口 异步计算的结果。Future接口和FutureTask类。 任务的执行
阅读全文
摘要:1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty、Hadoop、Kafka等。 使用Unsafe可用来直接访问系统内存资源并进行自主管理,Unsafe类在提升J
阅读全文