Concurrent
文章平均质量分 80
kris-liu
java开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC - Semaphore 源码分析
Semaphore,信号量。用于控制同时访问特定资源的线程数量,来保证合理的使用特定资源。比如:有10个数据库连接,有30个线程都需要使用连接,Semaphore可以控制只有10个线程能够获取连接,其他线程需要排队等待,当已经获取到连接的线程释放连接,排队的线程才能够去申请获取。源码分析Semaphore的实现方式是在内部定义了一个实现AbstractQueuedSynchronizer的内部类Sync原创 2016-10-08 16:58:34 · 804 阅读 · 0 评论 -
JUC - ThreadPoolExecutor 源码分析
ThreadPoolExecutor,Java线程池。使用线程池可以降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗;可以提高响应速度,当任务到达时,任务可以不需要的等到线程创建就能立即执行;可以提高线程的可管理性,防止无限制的创建线程,消耗系统资源。下面首先通过初始化参数介绍一下线程池:初始化参数 public ThreadPoolExecutor(int corePo原创 2016-11-27 22:13:10 · 919 阅读 · 0 评论 -
JUC - Condition 源码分析
Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。Condition 实例实质上被绑定到一个锁原创 2016-10-12 15:38:55 · 1195 阅读 · 0 评论 -
JUC - ReentrantLock 源码分析
ReentrantLock,一个可重入的独占锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。源码分析ReentrantLock的实现方式是在内部定义了一个实现AbstractQueuedSynchronizer(详见:JUC 源码分析 - AbstractQueuedSynchronizer(AQS))的内部类Syn原创 2016-10-11 18:05:25 · 1141 阅读 · 0 评论 -
JUC - AbstractQueuedSynchronizer(AQS) 源码分析
AbstractQueuedSynchronizer,同步器,以下简称AQS。本文从源码分析AQS的核心方法和实现原理。 AQS内部有两组重要的成员变量: 1. int类型的status变量,通过CAS操作(详见:CAS深度分析)改变status值来控制当前线程能否访问资源以及并发数量。 2. Node类型的head和tail两个变量,两个变量维护了一个FIFO的同步队列,原创 2016-09-28 15:24:48 · 1506 阅读 · 0 评论 -
JUC - CountDownLatch 源码分析
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。源码分析CountDownLatch的实现方式是在内部定义了一个实现AbstractQueuedSynchronizer(详见:JUC 源码分析 - AbstractQueuedSynchronizer(AQS))的内部类Sync,Sync主要实现了AbstractQueued原创 2016-10-11 10:58:45 · 1028 阅读 · 0 评论 -
JUC - FutureTask 源码分析
FutureTask,可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和获取计算结果的方法,此类提供了对 Future 的基本实现。仅在计算完成时才能获取结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。可使用 FutureTask 包装 Callable 或 Runnable 对象。因为 FutureTask 实现了 Runnable,所原创 2016-11-29 23:43:16 · 750 阅读 · 0 评论 -
JUC - ReentrantReadWriteLock 源码分析
ReentrantReadWriteLock,读写锁。维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 与互斥锁相比,读-写锁允许对共享数据进行更高级别的并发访问。虽然一次只有一个线程(writer 线程)可以修改共享数据,但在许多情况下,任何数量的线程可以同时读取共享数据(reader 线原创 2016-10-16 02:09:38 · 1898 阅读 · 2 评论
分享