java HashMap 线程安全 工具类

Hibernate的源码org.hibernate.util包中,FashHashMap.java的功能是保证在多线程环境下,写入的安全性,但是不保证读取的多线程安全。写入的方式是:

   1、拷贝当前的map

    2、对拷贝的map执行操作

    3、将拷贝的map赋值给当前的map.

 

 

存数据:

 public Object put(Object key, Object value) {

  synchronized (this) {
   HashMap temp = (HashMap) map.clone();
   Object result = temp.put(key, value);
   map = temp;
   return (result);
  }

 }

 

 public void putAll(Map in) {

  synchronized (this) {
   HashMap temp = (HashMap) map.clone();
   temp.putAll(in);
   map = temp;
  }

 }

删除数据:

public Object remove(Object key) {

  synchronized (this) {
   HashMap temp = (HashMap) map.clone();
   Object result = temp.remove(key);
   map = temp;
   return (result);
  }

 }

 

你可能感兴趣的:(java,多线程,Hibernate,object,HashMap,工具)