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不允许。

  • 相关阅读:
    PHP与WCF第一次亲密接触
    PHP操作MongoDB
    如何用SVN进行个人版本管理
    【Android】还原“微信”apk中的“发现”和“我”两个模块
    使php支持mbstring库
    mysql 与 mysqli的区别
    nginx 配置正向 HTTP 代理服务器[转]
    正向代理与反向代理的区别【Nginx读书笔记】
    为什么要使用Nginx?
    【转】关于HTTP中文翻译的讨论
  • 原文地址:https://www.cnblogs.com/ding0910/p/1510048.html
Copyright © 2011-2022 走看看