今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下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. Android简易实战教程--第六话《开发一键锁屏应用2·完成》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http:// ...

  2. java操作XML文件--读取内容

          先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类       由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...

  3. Xcode中为何要为设置bundle和App分别设置两份一样的图片资源

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在App设置的bundle中有时也会用到图片资源,而在 ...

  4. Qt应用程序中设置字体

    Qt应用程序中设置字体 应用程序中经常需要设置字体,例如office软件或者是其他的编辑器软件等等.这里主要涉及到如下几个概念:字体,字号以及风格(例如:粗体,斜体,下划线等等).Qt里面也有对应的类 ...

  5. Google会思考的深度学习系统

    上周五在旧金山举行的机器学习会议上,Google软件工程师Quoc V. Le讲解了Google的"深度学习"系统是如何运作的. "深度学习"需要用到大型计算机 ...

  6. Swift中实现Observable机制

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51917539 ...

  7. Mpg123源代码详解

    Mpg123与libmad一样,支持mpeg1,2,2.5音频解码.目前来看mpg123比libmad支持了网络播放功能.而且libmad基本上开源社区在2005年左右,基本停止更新,mpg123至今 ...

  8. CSS 控制table 滑动及调整列宽等问题总结

    一. 通过css控制table y方向上滚动 html中没有滚动条,可以根据overflow属性的scroll来对table显示不完全的内容进行滚动. 只是y方向上滚动,很简单,只要设置div的hei ...

  9. java设计模式---状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...

  10. Android进阶(三)android httpClient 支持HTTPS的访问方式

    项目中Android https请求地址遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 是S ...