摘要: 注意:在阅读本文之前或在阅读的过程中,需要用到ReentrantLock 1、对于ArrayBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2、创建 public ArrayBlockingQueue(int capacity, boolean fair) pu 阅读全文
posted @ 2018-04-25 23:24 yifanSJ 阅读(154) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 ReentrantLock.lock方法不允许Thread.i 阅读全文
posted @ 2018-04-25 12:04 yifanSJ 阅读(940) 评论(0) 推荐(0) 编辑
摘要: 先上两个图: 图一:ReentrantLock结构图 图二:公平锁和非公平锁流程图 公平锁 和 非公平锁的区别: 公平锁中,每一次的tryAcquire都会检查CLH队列中是否仍有前驱的元素,如果仍然有那么继续等待,通过这种方式来保证先来先服务的原则; 非公平锁,首先是检查并设置锁的状态,这种方式会 阅读全文
posted @ 2018-04-25 11:06 yifanSJ 阅读(283) 评论(0) 推荐(0) 编辑