随笔分类 - Java / 并发编程
摘要:1、LinkedBlockingQueue使用 LinkedBlockingQueue的使用案例详情如下: 1 import java.util.concurrent.LinkedBlockingDeque; 2 import java.util.concurrent.LinkedBlockingQ
阅读全文
摘要:ReentrantLock是互斥锁,若存在读多写少同时保证线程安全的场景,ReentrantLock效率比较低,此时需要用到ReentrantReadWriteLock。 一、ReentrantReadWriteLock介绍 ReentrantReadWriteLock是可重入的读写锁,实现了Rea
阅读全文
摘要:一、ReentrantLock介绍 ReentrantLock是JDK1.5引入的,实现Lock接口的互斥锁。保证多线程的环境下,共享资源的原子性。与Synchronized的非公平锁不同,ReentrantLock的实现公平锁、非公平锁。ReentrantLock是重入锁,重入是指,同一个线程可以
阅读全文
摘要:1、CyclicBarrier的介绍 CyclicBarrier 被称为栅栏,允许一组线程相互等待,直到这一组线程都准备完毕,放行,程序方可继续执行。 就好像做摩天轮,游乐园规定,至少有9个游客乘坐摩天轮,管理员才可以启动摩天轮,游客数和管理员少一个条件,摩天轮都不会启动。 2、CyclicBarr
阅读全文
摘要:ConditionObject是AbstractQueuedSynchronizer(AQS)实现的内部类,类图如下: 1、Condition接口 ConditionObject实现了Condition接口。先来看看Codition接口。 Codition中主要定义了挂起线程和唤醒线程的接口方法。C
阅读全文
摘要:1、ArrayBlockingQueue使用 ArrayBlockingQueue的使用案例详情如下: 1 import java.util.concurrent.ArrayBlockingQueue; 2 3 public class TestArrayBlockingQueue { 4 5 pu
阅读全文
摘要:1、Semaphore介绍 计数信号量 - Semaphore,常用来限制访问资源的线程数量。优点类似限流中的令牌桶算法,只有拿到信号量的线程才能执行,与令牌桶算法未拿到令牌不处理请求不同的是,在Semaphore中未拿到信号量的线程会阻塞等待,直到有某个线程释放了持有的信号量。 2、Semapho
阅读全文
摘要:1、CountDownLatch介绍 CountDownLatch让一个或多个线程等待其他线程执行完成后再执行。在创建CountDownLatch对象时,必须指定线程数count,每当一个线程执行完成调用countDown()方法,线程数count减1,当count减到0时,await()方法就不再
阅读全文
摘要:1、Callable 与 FutureTask介绍 1.1、Callable 创建线程有两种方式,一种是继承Thread类,一种是实现Runnable接口重写run方法。其实Thread也实现了Runable接口。 在Runable接口中,仅有一个无参无返回结果的run方法。Runable接口详情:
阅读全文
摘要:1、Synchronized是什么 Synchronized是Java中的关键字。 2、Synchronized的作用 Synchronized可避免多线程同时操作临界资源,同一时间点,只会有一个线程操作临界资源,保证了操作的原子性。 3、Synchronized的使用 Synchronized可以
阅读全文
摘要:一、什么是ThreadLocal ThreadLocal是线程内的局部变量,仅在线程的生命周期内起作用。变量值在线程间不可见。 二、ThreadLocal的使用 ThreadLocal使用详情如下: 1 import java.util.concurrent.CountDownLatch; 2 3
阅读全文
摘要:1、什么是线程 线程是CPU调度执行的基本单元。 JVM允许在一个程序中同时执行多个线程,在Java中,用java.lang.Thread这个类来表示线程。 线程有优先级,高优先级的线程往往会比低优先级的线程先执行。 守护线程(daemon Thread),主线程执行完,守护线程跟着结束。 2、Th
阅读全文