Se ho un flusso parallelo in java 8 e termino con anyMatch e la mia raccolta ha un elemento che corrisponde al predicato, sto cercando di capire cosa succede quando un thread elabora questo elemento.Streaming Java 8 parallelo + anyMatch: i thread vengono interrotti una volta trovata una corrispondenza?
So che anyMatch è in cortocircuito, quindi non mi aspetto che ulteriori elementi vengano elaborati una volta che l'elemento corrispondente è stato elaborato. La mia confusione riguarda ciò che accade agli altri thread, che sono presumibilmente nel mezzo di elementi di elaborazione. Posso pensare a 3 scenari plausibili: a) Vengono interrotti? b) Continuano a elaborare l'elemento su cui stanno lavorando e quindi, una volta che tutti i thread non stanno facendo nulla, ottengo il mio risultato? c) Ottengo il risultato, ma i thread che stavano elaborando altri elementi continuano a elaborare quegli elementi (ma non assumono altri elementi una volta terminati)?
Ho un predicato di lunga durata, in cui è molto utile terminare rapidamente non appena so che un elemento corrisponde. Mi preoccupo un po 'perché non riesco a trovare questa informazione nella documentazione che potrebbe essere una cosa dipendente dall'implementazione, che sarebbe anche utile sapere.
Grazie
Ecco informazioni molto dettagliate sul codice di implementazione, ma vi consiglio di aggiungere un riepilogo che si rivolge, infine, la domanda del PO, vale a dire “Che cosa accadrà” → 'B' – Holger
Qualcuno può chiarire - questo si applica anche per le operazioni di noneMatch e allmatch ? Quindi se un thread di allMatch trova un elemento che non corrisponde, gli altri thread controllano periodicamente e quindi si fermano come risultato di questo? – Tranquility