Java并发编程实践 目录并发编程 01—— ConcurrentHashMap并发编程 02—— 阻塞队列和生产者-消费者模式并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程 04—— Callable和Future并发编程 05—— Complet...
分类:
编程语言 时间:
2014-11-26 16:10:05
阅读次数:
278
Java并发编程实践 目录并发编程 01—— ConcurrentHashMap并发编程 02—— 阻塞队列和生产者-消费者模式并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程 04—— Callable和Future并发编程 05—— Complet...
分类:
编程语言 时间:
2014-11-26 16:06:23
阅读次数:
308
Java并发编程实践 目录并发编程 01—— ConcurrentHashMap并发编程 02—— 阻塞队列和生产者-消费者模式并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程 04—— Callable和Future并发编程 05—— Complet...
分类:
编程语言 时间:
2014-11-25 18:14:38
阅读次数:
305
上篇文章尝试着使用head lock和tail lock分别在Get和Add元素时,对队列进行上锁,这样就避免了每次操作都锁住整个队列,缩小了锁的粒度。这里还有个问题,队列中持有的T对象指针,均是由调用者动态分配和释放的,如果调用量特别大,new/delete操作频繁,同样会导致性能下降,可能使.....
分类:
其他好文 时间:
2014-11-24 00:49:23
阅读次数:
395
环形缓冲区,使用在生产者--消费者模式很有用!!!...
分类:
其他好文 时间:
2014-11-22 16:04:09
阅读次数:
271
前言:最近在学习Java多线程,看到ImportNew网上有网友翻译的一篇文章《阻塞队列实现生产者消费者模式》。在文中,使用的是Java的concurrent包中的阻塞队列来实现。在看完后,自行实现阻塞队列。(一)准备 在多线程中,生产者-消费者问题是一个经典的多线程同步问题。简单来说就是有两种线....
分类:
编程语言 时间:
2014-11-20 01:18:38
阅读次数:
266
我们知道,对于一个队列而言,最主要的两个操作是添加元素(Add)和获取/删除元素(Get),之前文章中实现了一个linux下通用的阻塞队列BlockQueue,通过代码可以看出,为了保证在多线程环境下安全正确的运行,BlockQueue定义中的几个关键函数都进行了加锁保护,而锁住的对象是整个队列.....
分类:
其他好文 时间:
2014-11-19 17:54:52
阅读次数:
200
生产者消费者问题是一个多线程同步问题的经典案例,大多数多线程编程问题都是以生产者-消费者模式为基础,扩展衍生来的。在生产者消费者模式中,缓冲区起到了连接两个模块的作用:生产者把数据放入缓冲区,而消费者从缓冲区取出数据,如下图所示: 可以看出Buffer缓冲区作为一个中介,将生产者和消费者分...
分类:
其他好文 时间:
2014-11-18 17:28:27
阅读次数:
248
Java并发编程实践 目录并发编程 01—— ConcurrentHashMap并发编程 02—— 阻塞队列和生产者-消费者模式并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier并发编程 04—— Callable和Future并发编程 05—— Complet...
分类:
其他好文 时间:
2014-11-13 16:19:13
阅读次数:
175
使用NSCondition对象来控制进程的同步,通过NSCondition对象的操作实现进程间的通信。NSCondition也实现了NSLocking协议,因此也可以调用lock、 unlock来实现线程的同步。NSCondition类提供以下3个方法:
wait——该方法让线程一直等待;signal——唤醒在此NSCondition对象上等待的单个线程;broadcast——唤...
分类:
其他好文 时间:
2014-11-11 12:45:44
阅读次数:
194