JAVA_Lock
今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下Lock里面的一些类的方法。具体的代码实现例子我在这里就不做说明解释了,这些方法都比较容易理解和使用,如果实在是忘记的话可以在随时查阅资料即可。
ReentrantLock
int getHoldCount():查询当前线程保持此锁定的个数,也就是调用lock方法的次数
int getQueueLength:返回正等待获取此锁定的线程估计数
int getWiteQueueLength(Condition condition):返回等待与此锁定相关的给定条件Condition的线程估计数。比如有5个线程,每个线程都执行了同一个condition对象的await()方法,调用它的时候返回的int值是5
boolean hasQueuedThread(Thread thread):查询指定的线程是否正在等待获取此锁定
boolean hasQueuedThread():查询是否有线程正在等待获取此锁定
boolean hasWaiters(Condition condition) :查询是否有线程正在等待此锁定有关的condition条件
boolean isFair():判断是不是公平锁,默认的情况下ReentrantLock类使用的是非公平锁
boolean isHeldByCurrentThread():作用是查询当前线程是否保持此锁定
boolean isLocked():作用是查询此锁定是否由任意的线程保持
void lockInterruptibly():作用是如果当前线程未被中断,则获取锁定,如果已经被中断则出现异常
boolean tryLock():作用是仅在调用时锁定未被另一个线程保持的情况下,才获取该锁定。
boolean tryLock(Long timeout,TimeUnit unit):作用是,如果锁定在给定等待时间内没有被另一个线程保持,且当前线程未被中断,则获取该锁定
awaiteUntil()
awaitUnintettuptibly()
读写锁ReentrantReadWriteLock
读写锁表示有两个锁,一个是读操作相关的锁,共享锁。一个是写操作相关的锁,排他锁。多个读锁之间不互斥,读锁与写锁互斥,写锁与写锁互斥。
读写锁的代码例子我就不在这里列出了,想知道的话可以去随意的查询一下资料有很多。
Lock这块的内容我就暂时先写这么多,后续会继续补充分析他们的源码实现,会有更多的内容涉及到
JAVA_Lock的更多相关文章
- java_lock锁
lock锁是一个接口,jdk5.0新增的接口: 在线程中创建一个他的实现类对象Reentrantlock,默认为fals可以改为true,改为true后是有序的 把操作共享资源的代码放入try中,在t ...
- JUC回顾之-AQS同步器的实现原理
1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改.同步器内部依赖一个FIFO的双 ...
- Java面试题系列(一)描述一下JVM加载class文件的原理机制
JVM系列第4讲:从源代码到机器码,发生了什么? https://www.cnblogs.com/chanshuyi/p/jvm_serial_04_from_source_code_to_machi ...
随机推荐
- Linux2.6--Linus电梯
内核为了处理来自IO层的请求,需要进行相应的优化,因为当请求很多时,且请求的块又都几种在一块,那么如果按照顺序处理这些请求无疑是很大的时间开销,所以,我们需要寻求方法来处理这种情况(当然, ...
- [openwrt] uci 的shell和lua接口
uci是openwrt上配置操作的接口,不管是自动化的shell脚本,还是使用luci来二次开发配置界面,都会用到这部分知识. uci提供了lua, shell, c接口,这里主要用到了前两种 she ...
- 【Unity Shaders】使用CgInclude让你的Shader模块化——使用#define指令创建Shader
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Activity绑定自定义视图
在安卓工程中,我们通过创建可以自动生成on_Create方法,这里面有个: setContentView(R.layout.activity_main);是系统自带的一个布局文件,但是在开发的过程中, ...
- 当freemarker中EL表达式的值为空时出现异常的解决方法
<#list pageView.list as msg> <form name="msgForm" id="msgForm" ...
- UNIX环境高级编程——非阻塞设置
非阻塞I/O使我们可以调用open.read和write这样的I/O操作,并使这些操作不会永远阻塞.如果这种操作不能完成, 则调用立即出错返回,表示该操作如继续执行将阻塞. 对于一个给定的描述符有两种 ...
- android开发技巧——仿新版QQ锁屏下弹窗
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...
- PageContext ServletContext ServletConfig辨析
上面三个东西都是什么关系呀? 先看图 注意几点 1 GenericServlet有两个init方法# 2 GenericServlet既实现了ServletConfig方法,它自己由依赖一个Servl ...
- JavaScript进阶(十)Array 数组详解
JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...
- React Native开发必备的10个插件包
Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...