zoukankan      html  css  js  c++  java
  • HashSetArrayListHashMap的线程同步控制方法【摘自:新浪博客】

    【摘自:新浪博客】

    Collections类中提供了多个synchronizedXxx,该方法返回指定集合对象对应的同步对象,从而可以解决多线程并发访问集合时的线程安全问题.
        正如Java中常用的集合框架推荐使用的三个实现类:HashSet\ArrayList\HashMap都是线程不安全的.如果有多条线程访问它们,而且有超过一条的线程试图修改它们,则可能出现错务.Collections提供了多个静态方法用于创建同步集合
    下面程序创建了四个同步的集合对象

    import java.util.*;
    public class  TestSynchronized
    {
     public static void main(String[] args)
     {
      //下面程序创建了四个同步的集合对象
      Collection c=Collections.synchronizedCollection(new ArrayList());
      List list=Collections.synchronizedList(new ArrayList());
      Set s=Collections.synchronizedSet(new HashSet());
      Map m=Collections.synchronizedMap(new HashMap());
     }
    }

       在上面的程序中,直接将创建的集合对象传给了Collections的synchronizedXxx方法,这样就直接获取List,Set和Map的线程安全实现版本了

     补充一点说明

    Vector,HashTable是线程安全的集合类

    Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

    HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

  • 相关阅读:
    使用pca/lda降维
    交叉验证
    各模型选择及工作流程
    岭回归
    线性回归
    K-临近算法(KNN)
    django中的中间件
    django中form组件
    javascript中的词法分析
    Django之Model操作
  • 原文地址:https://www.cnblogs.com/ding0910/p/1510048.html
Copyright © 2011-2022 走看看