同步容器类 Vector和ArayList: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删 ...
分类:
编程语言 时间:
2019-08-10 09:45:44
阅读次数:
125
概述 CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。 打个通俗的比方,可以把 CyclicBarrier 的执行流程比作:几个人(类比线程)围着操场跑圈,所有人都到达终点后(终点可理解为“屏障 ...
分类:
其他好文 时间:
2019-08-08 21:31:06
阅读次数:
109
概述 CountDownLatch 是并发包中的一个工具类,它的典型应用场景为:一个线程等待几个线程执行,待这几个线程结束后,该线程再继续执行。 简单起见,可以把它理解为一个倒数的计数器:初始值为线程数,每个线程结束时执行减 1 操作,当计数器减到 0 时等待的线程再继续执行。 代码分析 Count ...
分类:
其他好文 时间:
2019-08-07 22:09:36
阅读次数:
104
1、JDK5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显示地获取和释放锁。 2、synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。这种方式简化了同步的管理, ...
分类:
编程语言 时间:
2019-08-04 10:36:13
阅读次数:
108
基于AQS的前世今生,来学习并发工具类CountDownLatch。本文将从CountDownLatch的应用场景、源码原理解析来学习这个并发工具类。 1、 应用场景 CountDownLatch是并发包中用来控制一个或者多个线程等待其他线程完成操作的并发工具类。现以工作中的一个场景来描述下Coun ...
分类:
编程语言 时间:
2019-07-30 11:06:35
阅读次数:
134
(1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端 ...
分类:
系统相关 时间:
2019-07-28 15:46:59
阅读次数:
88
前言 这是Java并发包提供的最后一个线程池实现,也是最复杂的一个线程池。针对这一部分的代码太复杂,由于目前理解有限,只做简单介绍。通常大家说的Fork/Join框架其实就是指由ForkJoinPool作为线程池、ForkJoinTask(通常实现其三个抽象子类)为任务、ForkJoinWorker ...
分类:
编程语言 时间:
2019-07-28 13:41:27
阅读次数:
84
前言 今天我们一起学习下java.util.concurrent并发包里的 "CopyOnWriteArrayList" 工具类。当有多个线程可能同时遍历、修改某个公共数组时候,如果不希望因使用 synchronize 关键字锁住整个数组而影响性能,可以考虑使用CopyOnWriteArrayLis ...
分类:
编程语言 时间:
2019-07-23 00:39:46
阅读次数:
137
原文 一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentH ...
分类:
其他好文 时间:
2019-07-11 12:32:28
阅读次数:
80
CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什 ...
分类:
其他好文 时间:
2019-06-24 12:13:11
阅读次数:
249