zoukankan      html  css  js  c++  java
  • 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));

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

  • 相关阅读:
    跨浏览器的事件对象(EventUtil)
    原型 Object.create
    DC大牛的function扩展
    事件代理 proxy
    错误处理程序
    JQuery 插件
    关于ClownFish的问题
    C#拾遗
    Jquery技巧
    防盗链
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/12566460.html
Copyright © 2011-2022 走看看