- 博客(13)
- 收藏
- 关注
原创 AQS详解
AQS 的全称为,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。AQS为Java的并发包提供了强大的同步支持。通过内置的FIFO队列来完成资源获取线程的排队工作,并且利用一个被volatile关键字修饰的int类型的变量state表示同步状态。AQS 为构建锁和同步器提供了一些通用功能的实现,许多同步类实现都依赖于它,如常用的ReentrantLock、Semaphore等。
2024-07-18 13:40:48
3363
原创 深入理解Synchronized的使用和实现原理
synchronized 同步语句块的实现使用的是 monitorenter 和 monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。synchronized 修饰方法并没有 monitorenter 指令和 monitorexit 指令,取得代之的确实是 ACC_SYNCHRONIZED 标识,该标识指明了该方法是一个同步方法,用来保证互斥访问。
2024-07-17 09:41:17
2557
原创 ReentrantLock详解
在Java的并发编程库中,ReentrantLock是一种非常重要的同步工具,它提供了一种比内置synchronized关键字更加灵活和可定制的锁定机制。在本文中,我们将详细讨论ReentrantLock的工作原理、特性以及如何使用它来解决多线程并发问题。ReentrantLock 实现了 Lock 接口,是一个可重入且独占式的锁,和 synchronized 关键字类似。不过,ReentrantLock 更灵活、更强大,增加了轮询、超时、中断、公平锁和非公平锁等高级功能。
2024-07-16 14:30:53
1136
原创 Java中BIO,NIO,AIO详解
IO描述了计算机系统与外部设备之间通信的过程,即输入输出(input/output)。BIO(Blocking I/O):同步阻塞IO模型;NIO(Non-Blocking I/O):同步非阻塞IO模型;AIO(Asynchronous I/O):异步IO模型。那么,在讲解BIO,NIO和AIO之前,我们先要掌握同步和异步、阻塞和非阻塞的概念。同步:在同步操作中,程序的流程会等待一个操作完成后再继续执行。这意味着当一个线程发起一个请求后,它必须等待直到请求完成才能继续执行后续的操作。
2024-07-15 14:47:50
900
原创 Java中自定义线程池
线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制:它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。在Java中,池化思想主要体现在资源管理上,以提高程序的性能和资源的利用效率。池化技术允许预先创建和维护一组可重用的对象,这些对象可以在需要时被快速分配,使用后归还给池,而不是每次需要时都创建新对象,这样可以显著减少对象创建和销毁的开销。
2024-07-14 22:30:43
993
原创 CAP理论详解
聊到分布式架构,必然会聊到CAP理论。CAP 理论起源于 2000 年,由加州大学伯克利分校的 Eric Brewer 教授在分布式计算原理研讨会(PODC)上提出,因此 CAP 定理又被称作 布鲁尔定理(Brewer’s theorem)。2 年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 发表了布鲁尔猜想的证明,CAP 理论正式成为分布式领域的定理。
2024-07-12 13:54:55
969
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人