阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可...
分类:
编程语言 时间:
2015-10-20 23:59:22
阅读次数:
368
0 背景 阻塞队列在生产业务的很多场景里,都有使用需要。例如:在数据流式处理服务中,我们需要并行化的运行上游逻辑a与下游逻辑b;在rpc网络通讯框架场景中,我们需要解耦网络读写线程与消息处理线程。总之,阻塞队列是在不同职责的线程之间进行数据沟通的桥梁。在java的jdk里面有现成的Blockin.....
分类:
其他好文 时间:
2015-10-19 10:41:37
阅读次数:
238
1.redis介绍Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。2.阻塞队列使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线...
分类:
其他好文 时间:
2015-10-09 21:22:44
阅读次数:
322
每个锁对象都有两个队列,一个是就绪队列,一个是阻塞队列,就绪队列存储了将要获得锁的线程,阻塞队列存储了被阻塞的线程,当一个被线程被唤醒 (notify)后,才会进入到就绪队列,等待获得锁。当一开始线程a第一次执行account.add方法时,jvm会检查锁对象account 的就绪队列是否已经有线程...
分类:
其他好文 时间:
2015-09-23 16:46:41
阅读次数:
285
参考:《C++11深入应用》用同步阻塞队列解决生产者消费者问题。生产者消费者问题:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者...
分类:
编程语言 时间:
2015-08-29 11:09:30
阅读次数:
357
原文:http://www.cnblogs.com/dolphin0520/p/3932906.html在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。使用非阻塞队列的时候有一个很大问题就是:它不...
分类:
其他好文 时间:
2015-08-28 10:49:04
阅读次数:
237
前边的博客中我们介绍了如果用对象锁和条件锁以及更加方便的synchronized关键字来实现多线程的同步和互斥,也许你会觉得使用synchronized关键字已经非常方便了,但是使用者必须真正的理解synchronized的用法,而且要有一定的多线程的编程的经验,否则很难做到全面的考虑问题而造成意想不到的问题。其实在java中还有比...
分类:
编程语言 时间:
2015-08-28 09:38:07
阅读次数:
221
今天第一次接触DelayQueue,源于项目中的话单解析入库的拆分线程中引入,首先简单了解一下DelayQueue:DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed 元素。 问题1:如何来判断延迟期是否满了呢? --...
分类:
其他好文 时间:
2015-08-17 23:24:30
阅读次数:
156
mina中有两个线程池概念 1.处理监听建立连接的线程池 2.处理读写事件的线程池本文中主要探讨读写事件的线程池的选择这两种都经过实际项目的使用和检测,说说优缺点早期的项目是用UnorderedThreadPoolExecutor【无序线程池】特点:线程池管理一个无界阻塞队列,线程在分配事件,并发处...
分类:
编程语言 时间:
2015-08-12 13:08:13
阅读次数:
725
常见的操作系统教科书中,会使用互斥锁来实现读者线程和写者线程的同步问题,但是在JDK5推出线程安全队列之后,将该问题变得异常简单。 java.util.concurrent.ConcurrentLinkedQueue 是线程安全的非阻塞队列,其实...
分类:
编程语言 时间:
2015-08-11 23:50:10
阅读次数:
428