摘要:在前一篇文章 "Java中的阻塞队列(BlockingQueue)" 中介绍了Java中的阻塞队列。从性能上我们能得出一个结论:数组优于链表,CAS优于锁。那么有没有一种队列,通过数组的方式实现,而且采用无锁的结构?嗯,那就是Disruptor,而且比想象中更为强大。 1. 无处不在的锁 Java中 阅读全文
posted @ 2017-06-09 10:28 aheizi 阅读(1845) 评论(0) 推荐(1) 编辑
摘要:1. 什么是阻塞队列 阻塞队列(BlockingQueue)是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它提供了两个附加操作:当队列中为空时,从队列中获取元素的操作将被阻塞;当队列满时,向队列中添加元素的操作将被阻塞。 阅读全文
posted @ 2017-05-19 09:48 aheizi 阅读(3085) 评论(0) 推荐(1) 编辑
摘要:前一篇文章 "Java中实现多线程关键词整理" 中介绍了Java中创建多线程的各种办法,里面提到了线程池,这里对Java中的线程池做一个总结。 1. 关于ThreadPoolExecutor 为了更好地控制多线程,JDK提供了一套Executor框架,帮助开发人员有效的进行线程控制,其本质就是一个线 阅读全文
posted @ 2017-05-14 01:04 aheizi 阅读(4322) 评论(2) 推荐(2) 编辑
摘要:Java中的Runable,Callable,Future,FutureTask,ExecutorService,Excetor,Excutors,ThreadPoolExcetor在这里对这些关键词,以及它们的用法做一个总结。 首先将它们分个类: Runable,Callable Future,F 阅读全文
posted @ 2017-05-11 23:14 aheizi 阅读(1263) 评论(0) 推荐(0) 编辑
摘要:在第二个教程中,我们学习了如何使用工作队列在多个worker之间分配耗时的任务。 但是如果我们需要在远程计算机上运行功能并等待结果呢?嗯,这是另外一件事情,这种模式通常被称为远程过程调用(RPC)。 在本教程中我们将使用RabbitMQ的建立一个RPC系统:一个客户端和一个可伸缩的RPC服务器。由于 阅读全文
posted @ 2016-08-22 23:47 aheizi 阅读(2698) 评论(0) 推荐(1) 编辑
摘要:在上一节中,我们改进了我们的日志系统,替换使用fanout exchange仅仅能广播消息,使得选择性的接收日志成为可能。 虽然使用direct exchange改进了我们的系统,但是它仍然由他的局限性,——不能根据多个条件来做路由。 在我们的日志系统,我们可能不仅仅想根据严重性来订阅日志,还可以根 阅读全文
posted @ 2016-08-19 23:55 aheizi 阅读(831) 评论(2) 推荐(3) 编辑
摘要:在上一节中,我们创建了一个简单的日志系统,可以广播消息到很多接收者。 这一节,我们将在上一节的基础上加一个功能——订阅部分消息。例如,我们只将严重错误信息写入到日志文件保存在磁盘上,同时我们能将所有的日志都打印到屏幕上。 绑定(Binding) 我们之前已经创建了一个绑定: 绑定是exchange和 阅读全文
posted @ 2016-08-19 00:01 aheizi 阅读(875) 评论(0) 推荐(4) 编辑
摘要:在上一节中我们创建了一个工作队列,最好的情况是工作队列能够把任务恰到好处的分配给每一个worker。这一节中我们将做一些完全不同的事情——将消息传递给每一个消费者,这种模式被称为发布/订阅。 为了说明这种模式,我们构建一个日志系统,其包括两个部分,一个发出日志消息,另一个接收并打印出来。 在我们的日 阅读全文
posted @ 2016-08-18 00:21 aheizi 阅读(1048) 评论(0) 推荐(3) 编辑
摘要:在第一个教程里面,我们写了一个程序从一个有名字的队列中发送和接收消息,在这里我们将要创建一个分发耗时任务给多个worker的任务队列。 任务队列核心思想就是避免执行一个资源密集型的任务,而程序要等待其执行完毕才能进行下一步的任务。相反地我们让任务延迟执行,我们封装一个task作为消息,并把它发送至队 阅读全文
posted @ 2016-08-17 00:14 aheizi 阅读(1797) 评论(0) 推荐(3) 编辑
摘要:简介 RabbitMQ是一个消息代理,主要的想法很简单:它接收并转发消息。你可以把它当做一个邮局,当你发送邮件到邮筒,你相信邮差先生最终会将邮件投递给收件人。RabbitMQ在这个比喻里,是一个邮筒,邮局和一个邮递员。 RabbitMQ和邮局最大的不同是,RabbitMQ不处理纸张,而是接收、存储和 阅读全文
posted @ 2016-08-09 23:21 aheizi 阅读(1185) 评论(1) 推荐(2) 编辑