在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效率相对高一些,但是有...
分类:
编程语言 时间:
2016-04-22 20:23:53
阅读次数:
221
声明: 1、该篇只是提供一种自定义线程池的实现方式,可能性能、安全等方面需要优化; 2、该篇自定义线程池使用Lock(可重入锁ReentrantLock)结合Condition来实现; 3、该篇力求使用简单的方式呈现,如有错误之处,欢迎指正,在此表示感谢。 概述 自定义线程池三要素包括: 1、存储线 ...
分类:
编程语言 时间:
2016-04-20 19:51:02
阅读次数:
375
LocatedFileStatusFetcher通过多线程的方式,实现了针对给定输入路径数组,使用配置的线程数目来获取数据块位置的核心功能。它通过google的可监听并发技术ListenableFuture、ListeningExecutorService,实现了两层级别的子任务的并发执行、结果监听与回调处理,还使用了可重入互斥锁ReentrantLock、多线程间协调通信工具Condition来解决多线程之间的并发同步问题,特别是主任务线程与子任务线程间的主从协调、通信等。...
分类:
其他好文 时间:
2016-04-20 16:27:44
阅读次数:
209
今天看并发编程实战,看到一个实例 public class Widget { public synchronized void doSomething() { ... } } public class LoggingWidget extends Widget { public synchronize ...
分类:
其他好文 时间:
2016-04-15 19:47:53
阅读次数:
125
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求 ...
分类:
其他好文 时间:
2016-04-12 22:21:13
阅读次数:
183
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法【即可重入】,而无需重新获得锁;https://www.zhihu.com/question/23284564/answer/296 ...
分类:
其他好文 时间:
2016-04-12 22:20:17
阅读次数:
281
Java中在控制多线程访问资源的时候使用了信号量可以控制多个线程同时访问一个资源。 有两个构造方法: public Semaphore(int permits) public Semaphore(int permits,boolean fair) 第二个参数和重入锁一样,是指定是否公平。(公平是要牺 ...
分类:
编程语言 时间:
2016-04-09 16:38:10
阅读次数:
154
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能 ...
分类:
其他好文 时间:
2016-04-05 19:28:05
阅读次数:
119
ReetrantLock与Condition:
参考
在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的 AbstractQueuedSynchronizer(同步器),确切的说是Reen...
分类:
其他好文 时间:
2016-04-05 17:52:43
阅读次数:
208
Lock锁简介Lock锁机制是JDK 5之后新增的锁机制,不同于内置锁,Lock锁必须显式声明,并在合适的位置释放锁。Lock是一个接口,其由三个具体的实现:ReentrantLock、ReetrantReadWriteLock.ReadLock 和 ReetrantReadWriteLock.WriteLock,即重入锁、读锁和写锁。增加Lock机制主要是因为内置锁存在一些功能上局限性。比如无法中...
分类:
编程语言 时间:
2016-04-05 16:21:10
阅读次数:
185