使用c3p0连接池 实际应用中 仍然有一些用户在更新数据时需要长时间的等待java的vector实现原理是什么 当vector的容量用完此时再添加一个对象 引起容量的再分配 此时如何分配的?原有数据是否会因为容量变化而要转移?请高手指点一二

解决方案 »

  1.   

    Vector 不就是线程安全的ArrayList吗
    实现方式都是用数组形式来存储数据的
      

  2.   

    其实我的意思就是建议你去查看下vector的源代码,但是我又想写成“看或者不看”体,我真的没考虑到您老可能来自火星以前从没看过这种表达。本来只想帮人竟然被骂神经病。好吧,算我多嘴了,您老继续等。
      

  3.   

    protected Object[] elementData;//里面就是一个object[]数组
    private void ensureCapacityHelper(int minCapacity) {
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
        Object[] oldData = elementData;
        int newCapacity = (capacityIncrement > 0) ?
    (oldCapacity + capacityIncrement) : (oldCapacity * 2);
             if (newCapacity < minCapacity) {
    newCapacity = minCapacity;
        }
                elementData = Arrays.copyOf(elementData, newCapacity);
    }
        }
        elementData = Arrays.copyOf(elementData, newCapacity);//这句最重要
      

  4.   

    复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。
      

  5.   

    Vector 不就是线程安全的ArrayList  
    实现方式是数组  封装了对数组的各种操作  扩充的时候原来的当然还在 不然封装就没用了
      

  6.   

    也就是说 如果容量不够 重新分配容量的时候 确实是将原有数据copy到新开辟的空间了?