
并发 lock
一叶一菩提魁
这个作者很懒,什么都没留下…
展开
-
4种保证三个线程按顺序致行的方法
package com.nwk.juc;import java.util.UUID;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CountDownLatch;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.Semaphore;import java.util.concurrent.locks原创 2022-03-18 14:50:33 · 320 阅读 · 0 评论 -
Semaphore
1.Semaphore 意思Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。2.Semaphore 常用方法acquire() 获取一个令牌,在获取到令牌、或者被其他线程调用中断之前线程一直处于阻塞状态。acquire(int permits) 获取permits(多个)个令牌,在获取到令牌、或者被其他线程调用中断、或超时之前线程一直处于阻塞状态。 tryAcquire()尝试获得令牌,返回获取令原创 2021-09-14 17:21:59 · 142 阅读 · 0 评论 -
CyclicBarrier
1.CyclicBarrier 概念CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(你设置的等待线程数量)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 栅栏。2. CyclicBarrier 的常用方法CyclicBarrier(int parties);//设置有几个线程相互等待CyclicBarrier(int parti原创 2021-09-14 16:48:10 · 162 阅读 · 0 评论 -
CountDownLatch
1. countDownLatch 概念CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时会唤醒阻塞队列所有线程,这里的计数器是一个标志,可以表示一个任务一个线程,也可以表示一个倒计时器,CountDownLatch可以解决那些一个或者多个线程在执行之前必须依赖于某些必要的前提业务先执行的场景。2.countDownLatch 的常用方法new CountDownLatch(int count); //构造方法原创 2021-09-14 16:15:54 · 154 阅读 · 0 评论 -
简单Java自旋锁
1.什么是自旋锁自旋锁(spin lock)是一种非阻塞锁,也就是说,如果某线程需要获取锁,但该锁已经被其他线程占用时,该线程不会被挂起(在哪循环),而是在不断的消耗CPU的时间,不停的试图获取锁。2.什么时候用自旋锁自旋锁就主要用在临界区持锁时间非常短且CPU资源不紧张的情况下,自旋锁一般用于多核的服务器。Java 实现 简单可重入自旋锁public class SpinLock implements Lock { /** * use thread itself as sy原创 2021-09-14 11:34:56 · 433 阅读 · 0 评论