随笔分类 - 13 + ---- 并发
摘要:1.简介 CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。 在 Java 中,J
阅读全文
摘要:1.简介 在分析完 (以下简称 AQS)和 的原理后,本文将分析 java.util.concurrent 包下的两个线程同步组件 和`CyclicBarrier`。这两个同步组件比较常用,也经常被放在一起对比。通过分析这两个同步组件,可使我们对 Java 线程间协同有更深入的了解。同时通过分析其原
阅读全文
摘要:1.简介 可重入锁 自 JDK 1.5 被引入,功能上与 关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized 关键字一致,均是用于多线程的同步。但除此之外,ReentrantLock 在
阅读全文
摘要:1. 简介 是一个接口,AbstractQueuedSynchronizer 中的 内部类实现了这个接口。 声明了一组 的方法,这些方法的功能与 中的 等方法相似。这两者相同的地方在于,它们所提供的 方法均是为了协同线程的运行秩序。只不过,Object 中的方法需要配合 synchronized 关
阅读全文
摘要:1.简介 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作。AQS 是很多同步器的基础框架,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于 AQS
阅读全文
摘要:1.简介 线程池可以简单看做是一组线程的集合,通过使用线程池,我们可以方便的复用线程,避免了频繁创建和销毁线程所带来的开销。在应用上,线程池可应用在后端相关服务中。比如 Web 服务器,数据库服务器等。以 Web 服务器为例,假如 Web 服务器会收到大量短时的 HTTP 请求,如果此时我们简单的为
阅读全文