并发编程
程序员Monkey
努力做好自己!!
展开
-
排队买包子之ArrayBlockingQueue与LinkedBlockingQueue
在java集合包中,我们经常用到的两个集合,一个是ArrayList,一个是LinkedList,众所周知,ArrayList是用数组实现的,便于查询,LinkedList是使用链表实现的,便于插入和删除操作,如果我们要通过ArrayList或LinkedList实现一个生产者或者消费者模式,我们需要编写下面的代码来完成:List<Object> eggs = new A...原创 2019-05-29 18:40:41 · 1315 阅读 · 2 评论 -
共享资源同步器AQS详解
在ArrayBlockingQueue与LinkedBlockingQueue一文中有提到过一个同步器框架:AbstractQueuedSynchronizer,简称AQS,今天我们来揭开它神秘的面纱。我们知道在ArrayBlockingQueue和LinkedeBlockQueue中,我们间接使用到了AQS,其实它的直接使用是对锁的实现,例如:ReentrantLock、Semaphore...原创 2019-06-13 17:51:26 · 1314 阅读 · 0 评论 -
AQS运用之ReentrantLock实现
在共享资源同步器AQS详解中讲了AQS的底层实现原理,现在来看一下它的具体运用,我们知道AQS定义了几个空的抛异常的方法让用户自定义实现。自定义同步器实现时主要实现以下几种方法:isHeldExclusively():该线程是否正在独占资源。只有用到condition才需要去实现它。tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败则返回fa...原创 2019-06-26 18:05:22 · 1220 阅读 · 0 评论