07 2019 档案
摘要:和朱晔一起复习Java并发(五):并发容器和同步器 本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器。 ConcurrentHashMap和ConcurrentSkipListMap的性能 首先,我们来测试一下ConcurrentHas
阅读全文
摘要:本节我们来研究下并发包中的Atomic类型。 AtomicXXX和XXXAdder以及XXXAccumulator性能测试 先来一把性能测试,对比一下AtomicLong(1.5出来的)、LongAdder(1.8出来的)和LongAccumulator(1.8出来的)用于简单累加的性能。 程序逻辑
阅读全文
摘要:这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把。本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能。 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一些公共代码: 我们需要使用锁来保护counter和hashMap这2个资源 write字段表示这个线
阅读全文
摘要:和朱晔一起复习Java并发(二):队列 老样子,我们还是从一些例子开始慢慢熟悉各种并发队列。以看小说看故事的心态来学习不会显得那么枯燥而且更容易记忆深刻。 阻塞队列的等待? 阻塞队列最适合做的事情就是做为生产消费者的中间存储,以抵抗生产者消费者速率不匹配的问题,不但是在速率不匹配的时候能够有地方暂存
阅读全文
摘要:和我之前的Spring系列文章一样,我们会以做一些Demo做实验的方式来复习一些知识点。 本文我们先从Java并发中最最常用的线程池开始。 从一个线程池实验开始 首先我们写一个方法来每秒一次定时输出线程池的基本信息: 然后,我们写一个方法来定时提交任务到线程池: 可以看到: 一共提交20个任务 每秒
阅读全文
摘要:本文我们主要是想测试和研究几点: 基于Netty写的最简单的转发HTTP请求的程序,四层和七层性能的差异 三种代理线程模型性能的差异,下文会详细解释三种线程模型 池和非池化ByteBuffer性能的差异 本文测试使用的代码在: https://github.com/JosephZhu1983/pro
阅读全文