美文网首页
并发Collections

并发Collections

作者: Brucetoo | 来源:发表于2016-03-04 17:09 被阅读73次

    1.TimeUnit

    Thread.sleep() 是一个静态方法,暂停线程时它不会释放锁,该方法会抛出InterrupttedException异常(如果有线程中断了当前线程),其可读性很低,不能清楚的知道到底暂停了多久,对比两者用法就会发现 TineUnit表达的很清楚
    TimeUnit.MINUTES.sleep(4); // sleeping for 4 minutes
    Thread.sleep(4*60*1000);

    2. CopyOnWriteArrayList

    CopyOnWriteArrayList是jdk concurrent包中提供的一个非阻塞型的,线程安全的List实现。

    • CopyOnWriteArrayList在进行数据修改时,都不会对数据进行锁定,每次修改时,先拷贝整个数组,然后修改其中的一些元素,完成上述操作后,替换整个数组的指针。
    • CopyOnWriteArrayList进行读取时,也不进行数据锁定,直接返回需要查询的数据,如果需要返回整个数组,那么会将整个数组拷贝一份,再返回,保证内部array在任何情况下都是只读的。
      因为上述读写特性,如果需要频繁对CopyOnWriteArrayList进行修改,而很少读取的话,那么会严重降低系统性能。
      因为没有锁的干预,所以CopyOnWriteArrayLIst在少量修改,频繁读取的场景下,有很好的并发性能

    相关文章

      网友评论

          本文标题:并发Collections

          本文链接:https://www.haomeiwen.com/subject/fspokttx.html