代码小兵124
程序员
ArrayList使用fail-fast机制自然是因为它增强了数据的安全性。但在某些场景,我们可能想避免fail-fast机制抛出的异常,这时我们就要将ArrayList替换为使用fail-safe机制的CopyOnWriteArrayList。采用安全失败机制的集合容器,在Iterator的实现上没有设计抛出ConcurrentModificationException的代码段,从而避免了fail-fast。最后介绍下典型采用fail-safe的容器—&mdas...
fail-fast机制是Java集合(Collection)中的一种错误机制。在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),则会抛出ConcurrentModificationException(并发修改异常)。所以,在多线程环境下,是很容易抛出ConcurrentModificationException的,比如线程1正在对集合进行遍历,此时线程2对集合进行修改(增加、删除)。但是,单线程就不会抛出吗?很明显,单线程也会有类似的情况,...
有序性(Ordering)是指在什么情况下一个处理器上运行的一个线程所执行的内存访问操作在另外一个处理器运行的其他线程看来是乱序的(OutofOrder)。乱序是指内存访问操作的顺序看起来发生了变化。有序性是Java多线程编程的3大特性之一,下面我们就来通过一个生动的例子来简单论证Java多线程的有序性。在计算机体系结构中,为了提高执行部件的处理速度,经常在部件中采用流水线技术。所谓流水线技术,是指将一个重复的时序过程,分解成若干个子过程,而每一个子过程都可有效地在其专用功能...
我们在学习Java的过程中,接触了各自各样的方法函数,这些方法函数的调用能够实现不同的功能。同样的,泛型作为Java的一个特性,Java中也是有着泛型方法的。这里大家需要明确一点的是,泛型方法并不一定依赖其外部的类或者接口,它可以独立存在,也可以依赖外围类存在。例如:publicEget(intindex){rangeCheck(index);returnelementData(index);}ArrayList的这个get方法就是一个泛型方法,它依赖外围ArrayList声...