并发
Jerry的技术博客
天道酬勤; 事必总结
展开
-
AbstractQueueSynchronizer-共享式获取或释放
一、共享式锁实现及应用上一篇文章分享了独占式获或释放同步状态的过程。本文分享AQS共享式获取或释放同步状态,共享式获取或释放过程与独占式获取或释放过程大体相同,按照相同流程进行分析。首先,创建一个读锁类,用于对资源的共享式读访问,其核心是创建继承自AQS的内部类,并重写tryAcquireShared和tryReleaseShared方法。读锁类实现锁接口,并创建同步器成员变量,为简便起见主要实...原创 2019-02-03 16:43:49 · 210 阅读 · 0 评论 -
AbstractQueueSynchronizer-独占式获取与释放
一、独占式锁实现及应用按上一篇文章的介绍,创建一个写锁类,用于对资源独占式的写访问,如下。写锁类中核心是创建了继承自AQS的内部类,并重写tryAcquire和tryRelease方法;写锁类实现锁接口,并创建同步器成员变量,为简便起见主要实现了Lock接口中的lock和unlock方法。public class TestWriteLock implements Lock { pri...原创 2019-01-27 20:52:57 · 354 阅读 · 0 评论 -
AbstractQueueSynchronizer-简介
一、简介Java同步器AbstractQueuedSynchronizer简称AQS,JDK中很多并发工具类的内部实现都依赖于AQS,如ReentantLock、Semaphore、CounDownLatch、ThreadPoolExecutor等。AQS的设计基于模板方法模式,实际开发中需要继承AQS并重写指定的方法,将其组合在并发组件的实现中,而AQS在模板方法中封装了同步状态管理、线程排队...原创 2019-01-27 15:47:28 · 226 阅读 · 1 评论 -
CountDownLatch使用、源码解析及与Thread.join()对比
JDK从1.5版本开始提供CountDownLatch工具类,它能使一个县城等待其他线程各自完成工作后再执行,CountDownLatch内部是通过一个计数器实现的,计数器的初始值是批量任务初始线程的数量,每当一个线程完成任务后,计数器的值就会减1,当计数器的值为0时,唤醒所有被阻塞的线程。一、CountDownLatch使用首先,看下CountDownLatch的几个主要方法:public...原创 2019-06-13 19:51:00 · 284 阅读 · 0 评论 -
Java7 ForkJoinPool使用及源码解析
Java7中引入了一种新的并发框架-Fork/Join,Fork/Join采用分治+work-stealing的思想,Fork/Join相教于其他并发框架有其适合的使用场景:如果一个任务能够被分为多个子任务,通过组合这些子任务的结果就能获得最终结果,那么这项任务就适合用Fork/Join模式解决。一、ForkJoinPool使用示例如上说述,递归问题比较适合用ForkJoin框架解决,如求Fi...原创 2019-06-18 20:05:39 · 1145 阅读 · 0 评论 -
Java8 CompletableFuture使用
一、Future接口1.1 Runnable与CallableRunnable接口源自JDK1.1,它只有一个run()方法,该方法没有返回结果:public interface Runnable { public abstract void run();}Callable接口是JDK1.5中添加,只有一个call()方法,该方法支持结果返回且可以抛出异常:public ...原创 2019-07-08 21:19:04 · 1097 阅读 · 0 评论 -
乐观锁与悲观锁
一、悲观锁悲观锁(Pessimistic Lock),每次拿到数据时都会担心被别人修改,所以每次在拿数据的时候都会上锁,确保自己使用的过程中不会被被人修改,使用完后再释放锁。悲观锁常见的实现场景:a. 数据库:通过select … for update;上锁,直到事务commit或rollbackb. synchronized:操作前先上同步锁c. 分布式锁:操作前先上分布式锁,操作完成...原创 2019-07-21 11:05:56 · 607 阅读 · 0 评论 -
幂等技术及实现方式
一、什么是幂等幂等(idempotent)是一个数学与计算机的概念,常见于抽象代数。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,也不同担心重复执行会对系统造成改变,例如,setTrue()函数就是一个幂等函数,无论执行多少次,其结果都是一样的。二、幂等的实现方案幂等处理的是多次执行的问题,这并不仅仅出现在并发场景中,无论是顺序执行还是并发执行,都需要做好幂等...原创 2019-07-21 21:36:18 · 3612 阅读 · 0 评论