Disruptor: 一种高性能的、在并发线程间数据交换领域用于替换有界限队列的方案

一、摘要 LMAX 计划创建一个高性能的财务交易系统。作为我们工作的一部分,我们评估了多种方案去设计这个系统以求达到高性能目标,最后我们发现在传统的解决方案中遇到了基础上的瓶颈。 许多应用程序通过队列来在不同的处理阶段之间交换数据。我们的性能测试显示,如果按照传统的方式来使用队列,延时代价的量级和磁盘 IO 操作的延时量级是同一个量级——非常慢。如果在端到端的操作中采用多个队列,又会增加了几百个毫...

为什么阿里巴巴要禁用 Executors 创建线程池?

写在前面通过阅读本篇文章你将了解到: 线程池的定义 Executors创建线程池的几种方式 ThreadPoolExecutor对象 线程池执行任务逻辑和线程池参数的关系 Executors创建返回ThreadPoolExecutor对象 OOM异常测试 如何定义线程池参数 线程池的定义管理一组工作线程。通过线程池复用线程有以下几点优点: 减少资源创建 => 减少内存开销,创建线程占用...

解决 Git Revert 后再次 Merge 代码丢失问题

一、问题场景我司使用 GitLab 进行代码管理,当我对系统进行 SpringBoot 2.0 的版本升级,分支已经 Merge 到 Master 分支。实际部署中发现依赖的某个二方包的子依赖未做升级,导致某个服务无法掉通。由于二方包的修复需要时间,为了不影响后续其他功能的发布,因此决定对 Master 分支进行 Revert。 等到第二天,当修复了那个二方包问题后,重新提了 Merge 申请,却...

IDEA 2019激活教程

重要:IDEA是一款十分强大的JAVA开发IDE,如果有经济基础,请一定要支持正版。 一、官方途径1.1 EDU 邮箱使用教育邮箱(学生 or 老师)可以免费使用(每一年申请一次),参考文章学生授权申请方式。注册成功后,登陆Jertbrains可以看见到期时间。 1.2 初创公司IDEA 对初创公司提供五折折扣,参考:初创计划申请表 二、lookdiv 激活码 测试版本:IntelliJ I...

Java-并发编程——CyclicBarrier

一、简介CyclicBarrier 是一个同步工具类,它允许一组线程在到达某个栅栏点(common barrier point)互相等待,发生阻塞,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行.它非常适用于一组线程之间必需经常互相等待的情况。CyclicBarrier 字面理解是循环的栅栏,之所以称之为循环的是因为在等待线程释放后,该栅栏还可以复用。 建议阅读 Cyc...

Java 并发编程——LinkedBlockingQueue

在集合框架里,ArrayList 和 LinkedList 是使用最多的两种集合。ArrayList 和 ArrayBlockingQueue 一样,内部基于数组来存放元素,而 LinkedBlockingQueue 则和 LinkedList 一样,内部基于链表来存放元素。 LinkedBlockingQueue 实现了 BlockingQueue 接口,不同于 ArrayBlockingQue...

Java 并发编程——ArrayBlockingQueue

一、简介ArrayBlockingQueue 顾名思义:基于数组的阻塞队列。数组是要指定长度的,所以使用 ArrayBlockingQueue 时必须指定长度,也就是它是一个有界队列。它实现了 BlockingQueue 接口,有着队列、集合以及阻塞队列的所有方法。 ArrayBlockingQueue 是线程安全的,内部使用 ReentrantLock 来保证。ArrayBlockingQue...
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×