1. thread and thread pool
2. super and this
super(parameter list) in constructor调用父类里constructor,只有super()则指向默认的那个。
this(parameter list) in constructor调用另一个不同parameter list的constructor,只有this()则指向默认的那个
super().parentMethod()指向父类方法,一般为被override的
this().anotherMethod()指向子类另一个方法,虽然有些多余
推荐博客
http://www.cnblogs.com/zhguang/
涉及java加载机制,java gc等
3. volitile
用来和static对比。
static虽然所有的object都只能看到一个实例,但是具体运行的时候,每个thread都可能会有各自的copy,只有运行完会返回到原来static的地址,这时其他thread可以看到变量被更新。基本肯定不能thread safe。
volatile是强制各个线程不能有自己的copy,所有的操作都是对其他线程可见的,volatile变量存在于主内存,线程要读或写必须接触主内存,而不是各自的cache。即使如此依然不能保证thread safe,还是需要synchronized来保证thread safe。比起synchronized,volatile没有lock的机制。
4.Enumeration, Iterator, ListIterator
Enumeration通过对象的elements()方法返回
Iterator是新介入的几乎可以完全代替Enumeration,增加了remove(),fail-fast,如果正在遍历的过程中,别的线程更改了内容,抛出ConcurrnetModificationException。
ListIterator可以双向遍历,具有next,previous,add,remove,set方法。不能用于set。
5. Implementation of Map interface
HashMap
Hashtable
TreeMap,带有顺序的map,保证containsKey,put,get都是lgn的速度。不是thread safe。
EnumMap,专门支持enum的map,使用的时候必须指明enum类型。内部实现是数组形式,不允许null key,不是thread safe,所以性能较好。
例子:
EnumMap enumMap = new EnumMap(Season.class);
public enum Season{
SPRING,SUMMER,FALL,WINTER
}
import java.util.*;
public class TestEnumMap{
public static void main(String[] args){
//创建一个EnumMap对象,该EnumMap的所有key必须是Season枚举类的枚举值
EnumMap enumMap = new EnumMap(Season.class);
enumMap.put(Season.SUMMER,"夏日炎炎");
enumMap.put(Season.SPRING,"春暧花开");
System.out.println(enumMap);
}
}
6. Implementation of Set interface
HashSet
TreeSet,同treemap。
LinkedHashSet,使用linkedlist实现的hashset,元素按插入顺序存储,不是thread safe
EnumSet,同EnumMap,不允许null key,不是thread safe。
7. Comparable Comparator
Comparable是interface适合本身具有natural order的类implement compareTo(Object ob1)方法
Comparator是具体的类,适合实现compare(Object ob1, Obejct ob2)后,实例化再传入对象
其实没有本质上区别,只是用法不同。
8. Restfull SOAP