Je voudrais savoir si cet appel est thread-safe. Par exemple, si je s un ensemble:Le thread gava ImmutableSet.copyOf() est-il sûr?
Set<String> s = new HashSet<>();
et deux fils A et B, enfiler une modification de l'ensemble:
for (int i = 0; i < 1234; i++) {
// add, remove from s
}
tandis que le thread B créant ImmutableSets de s:
for (int i = 0; i < 5678; i++) {
Set<String> newS = ImmutableSet.copyOf(s);
}
Est-il sûr de supposer que chaque fois que ImmutableSet.copyOf()
est appelé, j'obtiens un ensemble immuable pour un état valide de s dans le temps? Y aura-t-il une sorte d'exception (comme ConcurrentModificationException
) qui peut se produire?
Si le filetage est sûr, comment a-t-il été réalisé sans verrouiller l'ensemble?
J'ai une question [ici] (https://stackoverflow.com/questions/46900147/send-record-and-wait-for-its-acknowledgement-to-receive) dans laquelle j'utilise la goyave et je suis Je ne sais pas si ces opérations fonctionnent correctement ou non, donc je voulais savoir si vous pouviez m'aider. – john
HashSet n'est PAS thread-safe même si personne ne le modifie en même temps. L'accès HashSet doit toujours être synchronisé. – 30thh