Quindi, sto cercando di ottenere la mia testa intorno al API flusso introdotto in Java 8. Sto cercando di fare un corso d'acqua che può essere eseguito su un thread separato (solo per scopi didattici)Stream.parallel() usa una nuova discussione?
String oracle = "http://www.oracle.com";
URL url = new URL(oracle);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
in.lines().parallel().forEach(System.out::println);
System.out.print("CLOSING THE INPUT STREAM!, shouldnt this crash?");
in.close();
Il il risultato non è quello che mi aspetterei .. (mi aspettavo un crash, dal momento che ho chiuso il flusso di input mentre l'altro thread sta leggendo da esso). Prendere nota della chiamata al metodo .parallel()
. Invece il codice sembra essere eseguito in modo sequenziale senza problemi.
USCITA:
<script language="JavaScript" src="http://www.oracleimg.com/us/assets/metrics/ora_ocom_hp.js"></script>
<!-- End SiteCatalyst code -->
<!-- SS_END_SNIPPET(fragment6,1)-->
<!-- SS_BEGIN_SNIPPET(fragment7,ui)--> <!-- SS_END_SNIPPET(fragment7,ui)-->
</html>
CLOSING THE INPUT STREAM!, shouldnt this crash?
Qualcuno sa cosa sta succedendo? Perché il mio codice non si arresta in modo anomalo?
È possibile utilizzare 'ForkJoinPool' se non si desidera che le cose vengano bloccate. – Maroun