Jak mówi tytuł, chciałbym uzyskać bezpieczny dla wątków HashSet przy użyciu kolekcji Guava.Bezpieczny dla wątków HashSet z kolekcjami Guava
Czy możesz mi pomóc?
Dzięki!
Jak mówi tytuł, chciałbym uzyskać bezpieczny dla wątków HashSet przy użyciu kolekcji Guava.Bezpieczny dla wątków HashSet z kolekcjami Guava
Czy możesz mi pomóc?
Dzięki!
To byłaby właściwa odpowiedź, Używanie klasy Ustaw z Guawy. W każdym razie odpowiedź od @crhis była dobra.
Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());
Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>());
Dzięki, spróbuję. – santiagobasulto
Przy okazji, wszystkie twoje punkty należą do mnie, ponieważ odpowiedziałem na to pytanie na liście mailingowej guava, 8 minut przed tym, jak został tutaj zamieszczony;) – whiskeysierra
@Willi: Jeśli mógłbym ci je przypisać, zrobiłbym to, ponieważ już trafiłem mój czapeczka na cały dzień, więc nie dostaję absolutnie żadnego powtórzenia za tę odpowiedź. :-P –
Google Collections miał metody fabrycznej nazwie Sets.newConcurrentHashSet() na chwilę.
Jego realizacja była podobna do Chrisa sugestia:
public static <E> Set<E> newConcurrentHashSet() {
return newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}
Mieli newSetFromMap() metodę wewnątrz com.google.common.collect.Sets klasy (napisanej przez Douga Lea z pomocą członkowie JCP JSR-166). Ta metoda została dodana do java.util.Collections w java 1.6.
Został wycofany w kolekcjach Google 1.0rc1, ponieważ istnieją plany lepszego wsparcia zestawów współbieżnych w Guava (więcej informacji here).
This post rozszerza się o użycie metody "newSetFromMap" do konstruowania zestawów współbieżnych.
Czy ustawisz jako niezmienny? – louisgab
Nie ma sensu robić nic w zabezpieczeniach wątków, gdy jest już niezmienna, prawda? – whiskeysierra
Jesteś righy Willi. To nie będzie niezmienne. Kilka wątków zmodyfikuje go jednocześnie. – santiagobasulto