Suche in der Dokumentation des Spliterator und nach ihm, die Spliterator nicht Thread-sicher ist:Spliterator: Thread-Safe oder nicht?
Trotz ihrer offensichtlichen Nutzen in parallelen Algorithmen sind spliterators nicht als Thread-sicher zu erwarten; stattdessen sollten Implementierungen paralleler Algorithmen unter Verwendung von Spliteratoren sicherstellen, dass der Spliterator nur von jeweils einem Thread gleichzeitig verwendet wird. Dies ist im Allgemeinen leicht durch serielle Thread-Beschränkung zu erreichen, was oft eine natürliche Folge von typischen parallelen Algorithmen ist, die durch rekursive Dekomposition arbeiten.
Aber in der weiteren Dokumentation, die eine widersprüchliche Aussage die obigen Aussage heißt es:
Struktur Interferenz einer Quelle kann auf folgende Weise (in ungefährer Reihenfolge abnehmender Erwünscht) verwaltet werden:
Die Quelle verwaltet gleichzeitige Änderungen. Zum Beispiel ist ein Schlüsselsatz einer java.util.concurrent.ConcurrentHashMap eine gleichzeitige Quelle. Ein aus der Quelle erstellter Splitterator meldet ein Merkmal von CONCURRENT.
Also bedeutet das, dass ein Spliterator, der aus einer Thread-sicheren Sammlung generiert wurde, Thread-sicher ist? Ist es richtig?
Ich sehe keinen Widerspruch in diesen beiden Aussagen: 'Spliterator' ist _nicht erforderlich_ um threadsicher zu sein, aber _ _ kann _threadsicher sein. Und wenn es threadsicher ist, kann es melden, dass es eine "CONCURRENT" -Charakteristik hat. –