![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lock
文章平均质量分 96
夏目 "
一个对coding有独特追求的人。
展开
-
ReadWriteLock 源码分析
ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的。 所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。 读写锁比互斥锁允许对于共享数据更大程度的并发。每次只能有一个写线程,但是同时可以有多个线程并发地读数据。ReadWriteLock适用于读多写少的并发情...转载 2018-04-14 22:31:01 · 1206 阅读 · 0 评论 -
ReentrantLock实现原理
1.1 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如: 1. 当线程尝试获取锁的时候,如果获取不到锁会一直阻塞。 2. 如果获取锁的线程进入休眠或者阻塞,除非当前线程异常,否则其他线程尝试...转载 2018-04-11 10:58:43 · 1963 阅读 · 0 评论 -
ReentrantLock可重入锁的使用场景
场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用于进行非重要任务防止重复执行,(如:清除无用临时文件,检查某些资源的可用性,数据备份操作等)private Reentran...转载 2018-04-11 14:29:29 · 4990 阅读 · 1 评论 -
三种实现分布式锁的方式
一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均...原创 2018-06-14 15:01:57 · 250412 阅读 · 78 评论