多线程与锁
文章平均质量分 85
多线程与锁
头未秃
这个作者很懒,什么都没留下…
展开
-
CompletableFuture使用详解
runAsync()、exceptionally()、whenComplete()、handle()、thenRun()、thenAccept()、thenApply()、thenCompose()、thenComposeAsync()、runAfterBoth()、runAfterBothAsync()、thenAcceptBoth()、thenCombine()、runAfterEither()、acceptEither()、applyToEither()、anyOf()、allOf()原创 2022-08-22 16:50:44 · 1629 阅读 · 0 评论 -
Condition(条件队列)的理解与使用
condition可以通俗的理解为条件队列。当一个线程在调用了await方法以后,直到线程等待的某个条件为真的时候才会被唤醒。这种方式为线程提供了更加简单的等待/通知模式。Condition必须要配合锁一起使用,因为对共享状态变量的访问发生在多线程环境下。一个Condition的实例必须与一个Lock绑定,因此Condition一般都是作为Lock的内部实现。原创 2022-03-24 15:23:02 · 682 阅读 · 0 评论 -
分布式锁的三种实现方式
目前分布式锁的实现方案主要包括三种:* 基于数据库(唯一索引)* 基于缓存(Redis,memcached,tair)* 基于Zookeeper原创 2022-01-11 19:16:19 · 34766 阅读 · 5 评论 -
分布式锁(Redisson)原理分析
分布式锁场景、Redisson分布式锁、SpringBoot集成Redisson步骤原创 2022-01-11 11:47:34 · 2007 阅读 · 0 评论 -
ReentrantReadWriteLock原理与使用
一、读写锁有这样一种场景:1、如果对一个共享资源的写操作没有读操作那么频繁,这个时候可以允许多个线程同时读取共享资源;2、但是如果有一个线程想去写这些共享资源,那么其他线程此刻就不应该对这些资源进行读和写操作了。Java中的ReentrantReadWriteLock正是为这种场景提供的锁。该类里面包括了读锁和写锁。1.1、可获取读锁的情况没有其他线程正在持有写锁;尝试获取读锁的线程同时持有写锁。1.2、可获取写锁的情况没有其他线程正在持有读锁;没有其他线程正在持有写锁。1原创 2022-01-08 15:53:57 · 1099 阅读 · 0 评论 -
ThreadLocal原理与使用
ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。原创 2022-01-06 14:11:30 · 195 阅读 · 1 评论 -
Lock(ReentrantLock)的理解与使用
一.synchronized的缺陷二.java.util.concurrent.locks包下常用的类1.Lock2.ReentrantLock例子1,lock()的正确使用方法例子2,tryLock()的使用方法例子3,lockInterruptibly()响应中断的使用方法:3.ReadWriteLock4.ReentrantReadWriteLock5.Lock和synchronized的选择三.锁的相关概念介绍1.可重入锁2.可中断锁3.公平锁4.读写锁原创 2021-05-05 14:54:56 · 680 阅读 · 1 评论 -
CyclicBarrier(栅栏)的理解与使用
它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。原创 2021-12-31 16:17:26 · 538 阅读 · 0 评论 -
Semaphore(信号量)的理解与使用
1、介绍Semaphore(信号量)是用来控制同时访问特定资源的线程数量,通过协调各个线程以保证合理地使用公共资源。Semaphore通过使用计数器来控制对共享资源的访问。 如果计数器大于0,则允许访问。 如果为0,则拒绝访问。 计数器所计数的是允许访问共享资源的许可。 因此,要访问资源,必须从信号量中授予线程许可。Semaphore 当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semapho原创 2021-12-31 15:54:09 · 1074 阅读 · 0 评论 -
CountDownLatch的理解和使用
CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。原创 2021-07-06 16:58:54 · 304 阅读 · 0 评论