- HashTable上下文同步:指的是它在更新hashcode的时候,要获取锁。
正解:同步是指在同一个时间点下面只有一个线程可以更改hash表,任何线程在更新hash表之前都要获得对象锁,其他现成要等待对象锁的释放。
- HashMap同步的实现:在代码中用Synchronize关键字修饰
正解:Map m=Collections.synchronizedMap(new HashMap()) 来返回一个同步的Map,该Map封装了底层的HashMap所有方法,是的在多线程情况下安全。
来源 | 读 | 更新 | 线程安全 | 特点 | |
ArrayList | Object[] array | 快O(1) | 慢 | 否 | 动态扩展(1.5倍) |
Vector | Object[] array | 快O(1) | 慢 | 是 | 动态扩展(2倍) |
LinkedList | 双向链表 | 慢O(n) | 快 | 否 | |
HashTable | Dictionary | 效率没有HashTable高 | 是 | 不允许主键null | |
HashMap | Map | 由于没有实现线程安全效率高 | 否 | 轻量级的HashTable,只允许一个主键为null,回收方式(强引用,必须强制回收) | |
TreeMap | SortMap | 读键序的效率高 | 按键有序 | ||
LinkedHashMap | HashMap | 需要输入和输出顺序一样的时候使用 | 还可以按读取顺序排序 | ||
WeakHashMap | Map | 和HashMap的区别在于回收方式(弱引用,直接回收) |