前言
ArrayList是开发人员使用最为普遍的类。该类是一个可调整大小的List接口
实现。该类实现了所有可选的列表操作,并允许存储包括 null
在内的所有元素。
每个ArrayList实例都有一个容量。 容量是用于存储列表中的元素的数组的大小。 它总是至少与列表大小一样大。 当元素被添加到ArrayList时,其容量会自动增长。
需要注意的是:ArrayList不是同步的,即非线程安全的的类。
在日常编程中,ArrayList是使用最多的列表。在上篇文章 AbstractCollection学习 的学习中,我们可以从java基础集合框架图
中得知:ArrayList继承了AbstractList
,并实现了List
接口。而其中 AbstractList 则继承了AbstractCollection
。
1 | public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { |
AbstractList继承了AbstractCollection抽象类,并实现了List接口。关于AbstractCollection已在另篇文章讲解。关于List接口,在下文有简述。AbstractList中唯一的一个属性为modCount
,表示集合被修改的次数。在AbstractList的子类中,凡是涉及到修改列表的内部数据结构的方法,都是修改modCount
的值。
DokuWiki是一个开源wiki引擎程序,运行于PHP环境下。所以在部署安装DokuWiki之前,需要确认待部署的机器上已有PHP环境。
1 | //包下载 |
在 Fork/Join框架源码学习之ForkJoinTask学习 文章中,我们已经初步分析了Fork/Join框架中的一个重要类 ForkJoinTask类。在本篇文章中,我们分析一下Fork/Join框架中的另一个重要类:ForkJoinPool。
在ForkJoinPool
的介绍中有说:ForkJoinPool是一种用于运行ForkJoinTasks的ExecutorService
(An ExecutorService for running ForkJoinTasks)。即ForkJoinPool
也是一种ExecutorService
。但由于工作窃取(work-stealing)的缘故,该类与其他ExecutorService
又不太一样。
创建ForkJoinPool
对象的方式有多种,在后面的分析中,可以看到该类有多个重载的构造函数。但是在官方文档中,比较推荐使用静态方法 commonPool()
创建ForkJoinPool
对象。
1 | 官方文档描述: |
SynchronousQueue是BlockingQueue阻塞队列的一种实现。但是作为阻塞队列的一种,SynchronousQueue与其他BlockingQueue有着不同特性:
A synchronous queue does not have any internal capacity, not even a capacity of one.
)。所以其内部方法:isEmpty
,size
,clear
,contains
,remove
都是默认实现。