随笔分类 -  java / juc

摘要:在生产者消费者模型这篇文章中我们使用了ReentrantLock结合Condition实现生产者消费者模型,但我们对于ReentrantLock和Condition的工作原理并不了解,其内部的结构和源码级别实现就更加不了解了。比如在使用await方法的时候,为什么一定要用while判断条件,用if为 阅读全文
posted @ 2023-11-07 15:09 mingshan 阅读(19) 评论(0) 推荐(0) 编辑
摘要:ReentrantLock源码学习 - 释放锁(unlock) 上次谈到了利用ReentrantLock的非公平和公平加锁方式,那么接下来看看释放锁的流程 首先调用ReentrantLock的unlock方法 public void unlock() { sync.release(1); } 然后会 阅读全文
posted @ 2023-11-07 14:31 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:ReentrantLock 学习 - 获取锁(JDK 1.8) ReentrantLock 提供非公平锁与公平锁两种加锁方式, 默认加锁方式为非公平锁。 ReentrantLock类的结构为: 从图中可以看出,ReentrantLock类包含三个静态内部类: Sync NonfairSync Fai 阅读全文
posted @ 2023-11-07 14:31 mingshan 阅读(26) 评论(0) 推荐(0) 编辑
摘要:生产者消费者问题是一个常见而且经典的问题,相信了解过多线程或者消息队列的同学对这个名词并不陌生。正如Java常用的设计模式一样,生产者消费者问题是为了解决某一类问题而存在,参阅维基百科对Producer–consumer problem的描述: In computing, the producer– 阅读全文
posted @ 2023-11-07 14:29 mingshan 阅读(56) 评论(0) 推荐(2) 编辑
摘要:了解到CompletableFuture的基础用法之后,我们不禁好奇,以前的Future模式不支持如此好用的异步编程,CompletableFuture是如何做到的呢?这就需要我们去阅读源码了,通过源码我们才能了解到其设计思想和实现方式,我们分析下supplyAsync 和 thenApplyAsy 阅读全文
posted @ 2023-11-01 15:03 mingshan 阅读(27) 评论(0) 推荐(0) 编辑
摘要:在JDK 1.5之后Java提供了并发包(java.util.concurrent),加强对并发的支持。该包下的类大量使用 CAS(Compare and Swap)来实现原子操作、锁优化等。在java.util.concurrent.atomic包中,提供了对基本类型的原子封装,比如AtomicI 阅读全文
posted @ 2023-11-01 15:02 mingshan 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Callable 在Java中我们知道创建一个线程可以继承Thread类或者实现Runnable接口,JDK1.5之后在java.util.concurrent提供了Callable接口,该接口设计类似Runnable接口,不过Callable接口可以返回任务执行的结果,并且在执行任务过程中可能会抛 阅读全文
posted @ 2023-11-01 15:00 mingshan 阅读(55) 评论(0) 推荐(0) 编辑
摘要:用过Spring推出的Reactor框架的同学可能会感叹异步编程的便利,不过Reactor对于异步编程的初学者来说有点复杂了,看其源码也不是那么容易,那么JDK有没有对异步编程相关的支持呢?Future想必大家都很熟悉(不了解的同学请查看Callable&Future及FutureTask实现分析( 阅读全文
posted @ 2023-10-31 16:56 mingshan 阅读(65) 评论(0) 推荐(0) 编辑
摘要:我们在使用ReentrantLock进行加锁和释放锁时可能会有好奇,这种加锁释放锁的操作和synchronized有什么区别,所以就会去翻源码,一翻源码才发现这里面的知识别有洞天,因为涉及到并发编程最基础最难理解的部分,其中AbstractQueuedSynchronizer这个类是java.uti 阅读全文
posted @ 2023-10-28 08:52 mingshan 阅读(18) 评论(0) 推荐(0) 编辑
摘要:上篇文章AQS源码分析-独占模式分析了AQS的结构以及独占模式下资源的获取与释放流程,啰嗦了AQS的基本结构和独占模式。这篇文章主要是探讨下AQS在共享模式下资源的获取与释放,同时比较下两种模式的差异(本文基于JDK11版本)。 流程分析 - 获取资源 这篇文章以CountDownLatch为例,和 阅读全文
posted @ 2023-10-28 08:51 mingshan 阅读(19) 评论(0) 推荐(0) 编辑
摘要:了解到CompletableFuture的基础用法之后,我们不禁好奇,以前的Future模式不支持如此好用的异步编程,CompletableFuture是如何做到的呢?这就需要我们去阅读源码了,通过源码我们才能了解到其设计思想和实现方式,我们分析下supplyAsync 和 thenApplyAsy 阅读全文
posted @ 2023-10-27 17:24 mingshan 阅读(103) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示