
JUC
lglglglglgui
一只站在树上的鸟儿,从来不会害怕树枝断裂,因为它相信的不是树枝,而是它自己的翅膀。
展开
-
JUC:06.CyclicBarrier栅栏
一、概述 CyclicBarrier的中文是循环栅栏的意思,该工具类会像栅栏一样,把线程拦住(阻塞),当拦住的线程的数量达到预定设置的值之后,会将阻塞的线程全部唤醒。循环是指CyclicBarrier可以重复使用,而CountDownLatch只能使用一次 二、常用方法 CyclicBarrier(int parties) : 构造函数,指定计数器中的值 await() throws InterruptedException, BrokenBarrierException :阻塞当前线程,阻塞的线程数+1原创 2020-11-16 22:47:29 · 144 阅读 · 0 评论 -
JUC:05.CountDownLatch
一、概述 CountDownLatch可以使得当前线程阻塞,直到当CountDownLatch中的计数器减少至0,当前线程才能继续往下执行.与Thread中的join()方法类似。 二、常用方法 CountDownLatch(int count):指定计数器的值 public void await() throws InterruptedException:调用后当前线程阻塞,直到当计数器的值为0,方法返回,该方法可以响应中断 public boolean await(long timeout, Time原创 2020-11-12 17:37:44 · 133 阅读 · 0 评论 -
JUC:04.Semaphore信号量
一、概述 在之前学习的synchronized关键字的对象锁与ReentrantLock重入锁都只能允许一个线程获取锁。而Semaphore不同,它可以允许多个线程获取锁访问资源,Semaphore常被运用在限流等应用场景。 二、常用API 构造方法 Semaphore(int permits) : 参数表示许可证数量,用来创建信号量 Semaphore(int permits,boolean fair): 当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量 常用方法 ...原创 2020-11-11 16:54:35 · 162 阅读 · 0 评论 -
JUC:03.LockSupport对象
Object监视器和Condition的局限性 Object和Condition的等待唤醒机制有如下几点局限性: 线程进行等待和唤醒的先决条件是:线程获取锁 唤醒方法需要在等待方法之后执行才能唤醒等待方法 LockSupport类原创 2020-10-30 09:50:26 · 439 阅读 · 0 评论 -
JUC工具包:02.Condition对象
JUC中的Condition对象 Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,wait()方法和notify()方法必须放在同步块内调用(synchronized块内),否则会报错. Condition 对象就是在Lock下的等待/通知机制。 Condition的功能特性与Object的不同: Condition能够支持不响应中断,而通过使用Object方式不支持 Condition能够支持多个等待队列(new 多个Condition对象),而Object方式只原创 2020-10-24 11:07:46 · 432 阅读 · 0 评论 -
JUC工具包:01.ReentrantLock
基本概念 synchronized是Java的内置锁,synchronized加锁和释放锁由jvm控制,不需要人为控制,所以使用的时候非常简单,但synchronized锁也存在许多的缺点。 1.不够灵活,不能跨方法加锁 2.当线程尝试获取synchronized锁的时候,如果获取不到锁会一直阻塞,这个阻塞的过程,用户无法控制 Reentrantlock是java.util.concurrent包下的可重入锁,可中断锁,默认是非公平锁。它的获取锁与释放锁由人手动控制,并且提供了更加细粒度的加锁方法,弥补了一原创 2020-10-20 09:22:33 · 482 阅读 · 0 评论