多线程
陆多多
这个作者很懒,什么都没留下…
展开
-
线程基础(一)
一、基础概念: wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态,他们最终调用的都是jvm级的native方法,当我们调用时,如果在没有控制权(monitor)的线程里执行对象的以上三种方法,就会报java.lang.IllegalMonitorStateException异常,因此我们需要确保让线程拥有对象的控制权。线程取得控制权的转载 2016-12-12 20:53:13 · 288 阅读 · 0 评论 -
同步屏障CyclicBarrier
CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。比如我们用一个Excel保存了用户所有银行流水,每个Sheet保存一个帐户近一年的每笔银行流水,现...原创 2018-08-06 20:23:31 · 202 阅读 · 0 评论 -
disruptor(1)
disruptor是一个高性能的本地消息队列,由于采用无锁实现,相比blockingQueue性能提升很多。在平时程序开发中,当需要异步实现时,disruptor是一个不错的选择。如果仅仅只是了解如何使用是不够的,今天我们来了解一下disruptor的基本实现。类图和作用这里我们选取了BatchEventProcessor这个消费者来做说明,示例demo就不做展示,网上有很多。这里有...原创 2019-04-13 22:17:23 · 258 阅读 · 0 评论 -
disruptor(2)-等待策略
在生产者消费者模式中,等待策略对消费者而言,是一个获取消息感知的方式,可以用轮询,事件触发来实现。对于生产者而言,等待策略表现在队列池已满的情况,如何等待消息被消费,在一般不重要的场景中,我们可能是就直接抛弃了。如我们自己使用queue作为等待队列,我们消费时一般用poll()这么去等待数据到来,如果直接用while循环,那cpu会消耗的很严重。这时我们常见的解决办法是在while循环中加上T...原创 2019-05-16 10:02:51 · 2253 阅读 · 0 评论 -
akka与spring集成
看了java高并发编程,对akka的actor开发模式比较感兴趣,于是在日常一个开发任务中使用了下。由于akka采用scala开发,对java开发者来说是黑盒。了解到akka在java里面最终是采用ForkJoinPool实现,相对于自己实现多线程并发,个人认为优势并不大。于是最终并未采用akka来实现功能。现在将自己网上收集并跑起来的代码整理下,以便对此感兴趣的同学可以跑起来。pom引...转载 2019-05-28 10:25:51 · 2678 阅读 · 0 评论 -
akka简介
akka是采用scala编写,基于了事件驱动的并发处理模式,性能非常的高,并且有很高的可用性.大大的简化了我们在应用系统中开发并发处理的过程.它在各个领域都有很好的表现.文档https://doc.akka.io/docs/akka/current/actors.html#actor-api笔记看的文档大部分都是继承UntypedActor,但看上面最新的api,已经替换成了Abstr...原创 2019-05-28 20:31:34 · 463 阅读 · 0 评论