java ConcurrentHashSet
时间: 2023-11-21 15:56:33 浏览: 169
Java并没有提供ConcurrentHashSet类,但是可以通过ConcurrentHashMap来实现类似的功能。ConcurrentHashMap是线程安全的哈希表,可以在多线程环境下使用。可以通过将值设置为一个固定的Object对象来实现ConcurrentHashSet的功能。具体实现如下:
```java
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashSet<E> extends Collections {
private final Set<E> set;
private final Object lock = new Object();
public ConcurrentHashSet() {
set = Collections.newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}
public boolean add(E e) {
synchronized (lock) {
return set.add(e);
}
}
public boolean remove(Object o) {
synchronized (lock) {
return set.remove(o);
}
}
public boolean contains(Object o) {
return set.contains(o);
}
public boolean isEmpty() {
return set.isEmpty();
}
public int size() {
return set.size();
}
}
```
使用示例:
```java
ConcurrentHashSet<String> set = new ConcurrentHashSet<>();
set.add("hello");
set.add("world");
System.out.println(set.contains("hello")); // 输出:true
System.out.println(set.contains("java")); // 输出:false
```
阅读全文
相关推荐












