Im Allgemeinen schreibe ich einen benutzerdefinierten Stromabnehmer, der mit einem Lieferanten, einem Akkumulator und einem Kombinator für mein Wissen kombiniert wird. In meinem Kundenkollektor merke ich, dass der Akkumulator nicht threadsicher ist, also setze ich den Combiner null
und den Collector.Characteristics
IDENTITY_FINISH
. Die Codes können die Kompilierung bestehen, aber es gibt eine Laufzeitausnahme, da der Combiner nicht Null sein sollte, was bereits durch die NotNull-Annotation angezeigt wird.Wie kann ich einen benutzerdefinierten Stream-Collector in Java 8 einen einzelnen Thread verwenden, um die Verarbeitung zu tun?
Meine Frage ist, wenn ich einen Combiner in meinem Kollektor mit Collector.Characteristics
sein, IDENTITY_FINISH
, wird der Akku parallel laufen (oder gleichzeitig) oder nur in einem einzigen Thread ohne Rennen Problem?
Wenn Sie nicht möchten, dass Ihr Collector parallel verwendet wird, können Sie beim Implementieren des Combiners eine Ausnahme auslösen, aber solange Sie das Merkmal CONCURRENT nicht melden, muss der Akkumulator kein Thread sein -sicheres AFAIK. –