在JDK5里面,提供了一个Lock接口。该接口通过底层框架的形式为设计更面向对象、可更加细粒度控制线程代码、更灵活控制线程通信提供了基础。实现Lock接口且使用得比较多的是可重入锁(ReentrantLock)以及读写锁(ReentrantReadWriteLock)。 1. ReentrantLo ...
分类:
编程语言 时间:
2016-08-27 23:16:52
阅读次数:
382
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用 ...
分类:
其他好文 时间:
2016-08-27 12:36:58
阅读次数:
121
分布式锁的解决方式 1、是否可以考虑采用ReentrantLock来实现,但是实际上去实现的时候是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantL ...
分类:
其他好文 时间:
2016-08-27 09:51:58
阅读次数:
152
写在前面的话 最近一直在边工作边学习分布式的东西,看到了构建Java中间件的基础知识,里面有提到Java多线程并发的工具类,例如ReentrantLock、CyclicBarrier、CountDownLatch... 以前在工作中也有用到过这些实用的工具类,但是了解不是特别深入,借此机会打个卡,好 ...
分类:
编程语言 时间:
2016-08-25 20:20:28
阅读次数:
319
一:锁的原理结构 (1)锁对象内部维护了一个同步管理器的对象AbstractQueuedSynchronizer,AbstractOwnableSynchronizer (2)该对象其实是一个抽象类,具体的锁的管理器继承该抽象类 (3)该抽象类的关键属性有: >Thread exclusiveOwn ...
分类:
编程语言 时间:
2016-08-24 17:13:54
阅读次数:
199
转自:http://www.jb51.net/article/55381.htm 转自:http://blog.csdn.net/aesop_wubo/article/details/7537278 ReentrantLock实现原理源码分析(推荐): http://huangyunbin.itey ...
分类:
编程语言 时间:
2016-08-24 17:06:13
阅读次数:
254
出处:http://gearever.iteye.com tomcat架构分析 (概览) tomcat架构分析 (容器类) tomcat架构分析 (valve机制) tomcat架构分析 (valve源码导读) tomcat架构分析 (Session管理) tomcat架构分析 (JNDI配置) t ...
分类:
其他好文 时间:
2016-08-19 09:56:18
阅读次数:
147
相同: 1、LinkedBlockingQueue和ArrayBlockingQueue都实现了BlockingQueue接口; 2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的队列 内部都是使用ReentrantLock和Condition来保证生产和消 ...
分类:
数据库 时间:
2016-08-12 16:34:08
阅读次数:
163
原文地址:http://www.zhihu.com/question/36771163(一) lock()方法获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数设置为 1。如果当前线程已经保持该锁,则将保持计数加 1,并且该方法立即返回。如果该锁被另一个线程保持,则出于线程调 ...
分类:
其他好文 时间:
2016-08-12 15:15:50
阅读次数:
159
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。 1、自旋锁 自旋锁 ...
分类:
编程语言 时间:
2016-08-08 17:33:32
阅读次数:
155