JDK1.6中Vector和HashTable线程安全实现源码阅读

HashMap和Vector都是线程安全类,接下来看下JDK是如何实现线程安全类的。

1、HashMap和Vector容器的实现都是数组,代码如下:

HashMap:
    /**
     * The hash table data.
     */
    private transient Entry[] table;
Vector:
    protected Object[] elementData;

 2、对这两个数据的访问,封闭在HashMap和Vector的类的方法里面,并且类中方法都是用了内部锁(this的所,方法上都加了synchronized关键字),例如Vector SetSize方法。

 public synchronized void setSize(int newSize) {
	modCount++;
	if (newSize > elementCount) {
	    ensureCapacityHelper(newSize);
	} else {
	    for (int i = newSize ; i < elementCount ; i++) {
		elementData[i] = null;
	    }
	}
	elementCount = newSize;
    }

猜你喜欢

转载自chenghao666.iteye.com/blog/2415472
今日推荐