今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下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的更多相关文章

  1. java_lock锁

    lock锁是一个接口,jdk5.0新增的接口: 在线程中创建一个他的实现类对象Reentrantlock,默认为fals可以改为true,改为true后是有序的 把操作共享资源的代码放入try中,在t ...

  2. JUC回顾之-AQS同步器的实现原理

    1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改.同步器内部依赖一个FIFO的双 ...

  3. Java面试题系列(一)描述一下JVM加载class文件的原理机制

    JVM系列第4讲:从源代码到机器码,发生了什么? https://www.cnblogs.com/chanshuyi/p/jvm_serial_04_from_source_code_to_machi ...

随机推荐

  1. -eq、-ne、-gt、-ge、-lt、-le英文意思

    在shell脚本中,使用-eq.-ne.-gt.-ge.-lt.-le进行整数的比较.英文意思分别为: -eq :equal(相等) -ne :not equal(不等) -gt  :greater ...

  2. Download all Apple open source OS X files at once

    While it is well known that Mac OS X contains open source code, how to access and download that sour ...

  3. 【Unity Shaders】Shader中的光照

    写在前面 自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已.当然,我相信这是因为我们写得少...不过这也是由于官方文档对这方面介绍很少的缘故, ...

  4. Transform介绍(Unity3D开发之二)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=491 可能unity中接触较早的 ...

  5. Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合

    内省的简单运用: JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则. 采用遍历BeanInfo的所有属性方式来查找和 ...

  6. (SQL Server)有关T-SQL的10个好习惯

    转自 http://www.cnblogs.com/CareySon/archive/2012/10/11/2719598.html 1.在生产环境中不要出现Select * 这一点我想大家已经是比较 ...

  7. Bootstrap简单HelloWorld入门教程

    这篇教程旨在让你在20分钟内学会使用twitter bootstrap创建一个站点.看完这个教程后你应该能够使用bootstrap来建立一个基本的响应式布局的页面,了解栅格系统,并且能够使用boots ...

  8. Android开发学习之路--Activity之Intent

    窗外再次飘起了小雪,还有1周就过年了,2016年即将到来,来年不知道自己将身处何处,船到桥头自然直吧.还是继续学习吧,上次学习了Activity,那么如果是两个Activity之间,怎么从一个Acti ...

  9. ORACLE--Connect By、Level、Start With的使用(Hierarchical query-层次查询)

    查找员工编号为7369的领导: 1 SELECT LEVEL,E.* FROM EMP E CONNECT BY PRIOR E.MGR = E.EMPNO START WITH E.EMPNO = ...

  10. App会取代网站吗?

    本文摘自<程序员的修炼:从优秀到卓越>,购买链接:http://product.china-pub.com/3769829 自1999年以来,不管是作为买家还是卖家,我一直是eBay的热心 ...