java 散列表和线程安全

java优化编程-散列表类:

线程安全的散列表类:
java.util.Vector/java.util.Hashtable
非线程安全的散列表类:
java.util.ArrayList/java.util.HashMap
在需要做线程同步以及要求线程安全的场合,开发人员应尽量使用线程安全的散列表类;
在不需要线程安全的场合,为了提高系统性能,开发人员应尽量选用非线程安全的散列表类;
因为线程安全的散列表会将原本可以并行处理的多线程进行排队,将转化为串行处理,从而导致系统性能下降。

ArrayList类可以通过下列方法标识成线程安全的类:
List list = Collections.synchronizedList(new ArrayList());

 

-----------------------------------------

java优化编程-ArrayList与LinkedList:

ArrayList(数组对象)与LinkedList(链表对象)是java中的两个专门用来处理数据元素列表的类。
这两个类在性能特性方面存在较大差别,差别源于它们不同的存储结构。
ArrayList是通过内部数据结构Object[]实现的;
而LinkedList是通过将一系列的内部记录连接在一起实现的。
它们性能的差异使它们拥有各自不同的适用场合。
当需要在某个位置添加一个新元素时,应该使用LinkedList来提高系统性能。
因为当在ArrayList的某个位置添加一个新元素时,系统会把此位置之后的所有元素向后推移,这个动作相当耗时。
而在LinkedList的某个位置添加一个新元素时,系统只需给此新元素添加一个与相邻对象的引用连接,这个动作相当廉价。
ArrayList适用在查找某个已存在元素的场合。
--------------------------------------------------------

java优化编程-瞬间值:

在做远程方法调用(RMI)应用开发时,将传递对象中不需要的属性标记为“瞬间值”,使其不被传递,来节约网络开销,
提高传输速度,提高系统性能,并且还可以节约调用端运行环境的内存资源。

----------------------------------------------------------------------------------------

设置ArrayList初始化容量: 

如果有一个很大的数组,并且你已经预料到此数组会变的异常庞大,那么这里给出一个方法用来提高添加新元素的速度,做好初始化操作。
调用ArrayList对象中的ensureCapacity(int size)方法;

============================================

 

 

你可能感兴趣的:(java,多线程,数据结构,编程,网络应用)