• 111111


    1. HashMap什么时候发生线程安全
    当多线程的情况下,可能产生条件竞争。当重新调整HashMap大小的时候,确实存在条件竞争,如果两个线程都发现HashMap需要重新调整大小了,它们会同时试着调整大小。在调整大小的过程中,存储在链表中的元素的次序会反过来,因为移动到新的数组位置的时候,HashMap并不会将元素放在LinkedList的尾部,而是放在头部,这是为了避免尾部遍历(tail traversing)。如果条件竞争发生了,那么就死循环了

    2. ArrayList扩容

    int newCapacity = oldCapacity + (oldCapacity >> 1);  //原数据

    计算原数据*1.5长度和 原数据+1/N(新数据)长度进行对比,谁大则用谁的,然后调用

    Arrays.copyOf(elementData, newCapacity);

    底层调用

    System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));

    新那一个数组,将原数组复制进去并返回

  • 相关阅读:
    OpenCV && C++ 01
    图像矩的理解
    Halcon Example
    LabVIEW
    Working Experience
    Working Experience
    Working Experience
    C++
    Trigger,Cursor
    Paging
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/12566460.html
Copyright © 2020-2023  润新知