08 2015 档案

摘要:前篇博客LZ已经分析了ReentrantLock的lock()实现过程,我们了解到lock实现机制有公平锁和非公平锁,两者的主要区别在于公平锁要按照CLH队列等待获取锁,而非公平锁无视CLH队列直接获取锁。但是对于unlock()而已,它是不分为公平锁和非公平锁的。 public void unlock() { sync.release(1); } pub... 阅读全文
posted @ 2015-08-25 08:04 chenssy 阅读(1425) 评论(0) 推荐(1) 编辑
摘要:前一篇博客简单介绍了ReentrantLock的定义和与synchronized的区别,下面跟随LZ的笔记来扒扒ReentrantLock的lock方法。我们知道ReentrantLock有公平锁、非公平锁之分,所以lock()我也已公平锁、非公平锁来进行阐述。首先我们来看ReentrantLock的结构【图来自Java多线程系列--“JUC锁”03之 公平锁(一)】: 从上图我们可以看到,... 阅读全文
posted @ 2015-08-19 14:54 chenssy 阅读(3063) 评论(4) 推荐(2) 编辑
摘要:注:由于要介绍ReentrantLock的东西太多了,免得各位客官看累,所以分三篇博客来阐述。本篇博客介绍ReentrantLock基本内容,后两篇博客从源码级别分别阐述ReentrantLock的lock、unlock实现机制。 ReentrantLock,可重入的互斥锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchr... 阅读全文
posted @ 2015-08-17 00:41 chenssy 阅读(2535) 评论(1) 推荐(1) 编辑
摘要:在java中有两种方法实现锁机制,一种是在前一篇博客中(【java7并发编程实战】-----线程同步机制:synchronized)介绍的synchronized,而另一种是比synchronized更加强大和领过的Lock。Lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区,相对于synchronized,Lock接口及其实现类提供了更加强大、灵活的锁机制。 一个简单的锁 在使... 阅读全文
posted @ 2015-08-10 17:22 chenssy 阅读(3410) 评论(0) 推荐(0) 编辑
摘要:在我们的实际应用当中可能经常会遇到这样一个场景:多个线程读或者、写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问。 在java中为了实现临界区提供了同步机制。当一个线程试图访问一个临界区时,他将使用一种同步机制来查看是不是已经有其... 阅读全文
posted @ 2015-08-04 09:08 chenssy 阅读(9872) 评论(6) 推荐(9) 编辑