Como dice el título, me gustaría obtener un HashSet seguro para subprocesos utilizando Guava Collections.Hash-safe HashSet con colecciones de guayaba
¿Me puede ayudar?
Gracias!
Como dice el título, me gustaría obtener un HashSet seguro para subprocesos utilizando Guava Collections.Hash-safe HashSet con colecciones de guayaba
¿Me puede ayudar?
Gracias!
Esta sería la respuesta correcta, utilizando la clase Conjuntos de Guava. De todos modos, la respuesta de @crhis fue buena.
Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>());
Gracias, lo intentaré. – santiagobasulto
Por cierto, todos sus puntos me pertenecen ya que respondí esta pregunta en la lista de correo de guayaba, 8 minutos antes de que se publicara aquí;) – whiskeysierra
@Willi: Si pudiera asignárselos, lo haría, porque ya he acertado mi gorra de representante del día, así que no tengo absolutamente ningún representante para esta respuesta. :-P –
Google Colecciones tenían un método fábrica llamada Sets.newConcurrentHashSet() por un tiempo.
Su implementación fue similar a la sugerencia de Chris:
public static <E> Set<E> newConcurrentHashSet() {
return newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}
tenían una newSetFromMap() método dentro de la clase com.google.common.collect.Sets (escrito por Doug Lea con la ayuda de miembros de JCP JSR-166). Ese método se agregó a java.util.Collections en java 1.6.
Se retiró en Google Collections 1.0rc1, ya que hay planes para admitir mejor conjuntos concurrentes en Guava (más información here).
This post amplía el uso del método "newSetFromMap" para construir conjuntos concurrentes.
¿Va a establecer ser inmutable? – louisgab
No tiene sentido hacer en hilo seguro cuando ya es inmutable, ¿no? – whiskeysierra
Tienes razón, Willi. No será inmutable. Varios hilos lo mutarán al mismo tiempo. – santiagobasulto