Java ConcurrentHashSet与性能更好的HashSet相比?

Java ConcurrentHashSet与性能更好的HashSet相比?,java,Java,ConcurrentHashSet与在并发环境中性能更好的HashSet相比 //package com.google.code.yanf4j.util; import java.io.Serializable; import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.

ConcurrentHashSet与在并发环境中性能更好的HashSet相比

//package com.google.code.yanf4j.util;

import java.io.Serializable;
import java.util.AbstractSet;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * A {@link ConcurrentHashMap}-backed {@link Set}.
 * 
 * @author The Apache MINA Project (dev@mina.apache.org)
 * @version $Rev: 597692 $, $Date: 2007-11-23 08:56:32 -0700 (Fri, 23 Nov 2007)
 *          $
 */
public class ConcurrentHashSet<E> extends MapBackedSet<E> {

  private static final long serialVersionUID = 8518578988740277828L;

  public ConcurrentHashSet() {
    super(new ConcurrentHashMap<E, Boolean>());
  }

  public ConcurrentHashSet(Collection<E> c) {
    super(new ConcurrentHashMap<E, Boolean>(), c);
  }

  @Override
  public boolean add(E o) {
    Boolean answer = ((ConcurrentMap<E, Boolean>) map).putIfAbsent(o,
        Boolean.TRUE);
    return answer == null;
  }
}
//package com.google.code.yanf4j.util;
导入java.io.Serializable;
导入java.util.AbstractSet;
导入java.util.Collection;
导入java.util.Iterator;
导入java.util.Map;
导入java.util.Set;
导入java.util.concurrent.ConcurrentHashMap;
导入java.util.concurrent.ConcurrentMap;
/**
*一个{@link ConcurrentHashMap}支持的{@link Set}。
* 
*@author-The-Apache-MINA项目(dev@mina.apache.org)
*@version$Rev:597692$,$Date:2007-11-23 08:56:32-0700(2007年11月23日星期五)
*          $
*/
公共类ConcurrentHashSet扩展了MapBackedSet{
私有静态最终长serialVersionUID=8518578988740277828L;
公共ConcurrentHashSet(){
super(新的ConcurrentHashMap());
}
公共ConcurrentHashSet(集合c){
super(新的ConcurrentHashMap(),c);
}
@凌驾
公共布尔加法(EO){
布尔答案=((ConcurrentMap)map).putIfAbsent(o,
布尔值(TRUE);
返回答案==null;
}
}

在任何环境中
哈希集的性能都将优于
ConcurrentHashSet
。当并发写入和读取开始发生时,会出现问题

因此,对于并发环境,最好的方法是
ConcurrentHashSet


但是,如果您使用
HashSet
存储一些仅在启动时加载的配置等(只有在初始写入后才进行读取操作),则可以。在我看来…

我们熟悉Set实现。无需发布源代码:-)@Thihara这是ConcurrentHashSet,它不在java api中:)如果您根据您的核心需求进行扩展,该怎么办?您可能需要,也可能不需要
Set
@fge的线程安全实现是的,我需要线程安全oops我的坏。。。我仍然坚持我的答案。。。由于同步开销。。。