![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 92
zzypiper
Box stop here.
展开
-
Semaphore源码
Semaphore源码1 概述1.1 简介1.2 特性1.3 使用2 源码2.1 类结构2.2 源码分析2.2.1 构造2.2.2 内部类Sync2.2.3 内部类NonfairSync2.2.4 内部类FairSync2.2.5 Semaphore其他API参考1 概述1.1 简介信号量为多线程协作提供了更强大的控制方法。广义上说,信号量是对锁的扩展。synchronized和ReentrantLock一次都只允许一个线程访问一个资源,而信号量可以指定多个线程同时访问某一个资源。public Se原创 2020-07-31 15:07:01 · 144 阅读 · 0 评论 -
Java并发编程(三)——锁的优化
锁的优化提高锁的性能减少锁的持有时间减小锁的粒度读写锁替换独占锁锁分离锁粗化JVM中对锁的优化策略锁偏向轻量级锁自旋锁提高锁的性能减少锁的持有时间减少锁的持有时间,有助于降低所冲突的可能性,进而提升系统的并发能力。例如:public synchronized void syncMethod(){ othercode1(); mutexMethod(); otherc...原创 2019-12-01 20:50:46 · 311 阅读 · 2 评论 -
Java并发编程(二)——JDK并发包
JDK并发包同步控制重入锁简单使用中断响应锁申请限时等待公平锁重入锁的实现要素Condition信号量(Semaphore)读写锁倒计数器:CountDownLatch循环栅栏:CyclicBarrier线程阻塞工具类:LockSupportGuava和RateLimiter限流线程的复用:线程池同步控制重入锁重入锁可以完全替代关键字synchronized。从JDK6.0开始,两者的性能差...原创 2019-11-19 13:48:37 · 157 阅读 · 0 评论 -
Java多线程设计模式——Latch设计模式
Latch设计模式场景描述CountDownLatch实现LatchCountDownLatch使用Reference场景描述程序员Alex叫上好朋友Jack、Gavin、Dillon去“同心湖”游玩。每个人前往目的地的方式不一样,到达的时间也不一样,需要等所有人都到达后开始活动。Latch(门阀)设计模式指定了一个屏障,需要所有条件都满足后,门阀才能打开。CountDownLatch实现...原创 2019-11-11 18:51:51 · 258 阅读 · 0 评论 -
Java多线程设计模式——读写锁分离
读写锁分离场景描述场景描述在多线程的情况下访问共享资源,需要对资源进行同步操作以防止数据不一致的情况。对资源的访问一般包括两种类型的动作——读和写(更新、删除、增加等资源会发生变化的动作)。如果多个线程在某个时刻都在进行对资源的读操作,虽然有资源的竞争,但是这种竞争不足以产生数据不一致的情况发生,这个时候如果直接使用排它的方式加锁,就显得有些简单粗暴。...原创 2019-11-10 14:36:26 · 320 阅读 · 0 评论 -
Java多线程设计模式——Single Thread Execution
Single Thread ExecutionSingle Thread Execution场景一(机场过安检)非线程安全线程安全小结场景(吃面问题)引起死锁的例子修改Single Thread ExecutionSingle Thread Execution模式是指在同一时刻只能有一个线程去访问共享资源,就像独木桥一样每次只允许一个人通行。Single Thread Execution就是采...原创 2019-11-09 19:47:32 · 205 阅读 · 0 评论 -
Java多线程设计模式——监控任务的生命周期
监控任务的生命周期场景描述解决方案观察者模式类图场景描述Thread提供了可获取状态、以及判断状态是否alive的方法。然而,这些方法均是针对线程本身的,我们提交的任务在运行过程中所处的状态是无法直接获取的,例如什么时候开始,什么时候结束。解决方案观察者模式但某个对象发生状态改变需要通知第三方时,观察者模式适合这样的工作。应用观察者模式时,使用Thread作为事件源(引发状态发生变化的源...原创 2019-11-09 15:55:17 · 351 阅读 · 3 评论 -
Java并发编程(一)——并发的基本概念
Java并发编程(一)——并发的基本概念概念并行计算的相关概念同步(Synchronous)和异步(Asynchronous)并发(Concurrent)和并行(Parallelism)临界区阻塞(Blocking)和非阻塞(Non-Blocking)死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)并发级别阻塞(Blocking)无饥饿(Starvation-Fre...原创 2019-11-08 12:02:10 · 261 阅读 · 0 评论