Ist es nicht parallel? Achten Sie auf die Bestellung.
Diesmal ist es nicht die Messung der Verarbeitungsreihenfolge, sondern die Messung der Leistung.
Messung.java
package test1;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Test3 {
public static void main(String[] args) {
Long start1 = System.nanoTime();
normal();
Long end1 = System.nanoTime();
System.out.println("stream\r\n" + (end1 - start1) + "ns\r\n");
Long start2 = System.nanoTime();
parallel();
Long end2 = System.nanoTime();
System.out.println("parallelStream\r\n" + (end2 - start2) + "ns");
}
private static void normal() {
generate().stream().filter(filter).map(v -> v + 1).forEachOrdered(qwe);
}
private static void parallel() {
generate().parallelStream().filter(filter).map(v -> v + 1).forEachOrdered(qwe);
}
private static List<String> generate() {
return IntStream.range(0, 9999).boxed().map(String::valueOf).collect(Collectors.toList());
}
private static final Predicate<String> filter = v -> v.length() == 3;
private static final Consumer<String> qwe = v -> {};
}
stream
13381900ns
parallelStream
8380600ns
Es ist ganz anders
Weil es Multithreading ist Es ist nicht mehr threadsicher.
Wenn Sie etwas Schlechtes tun, erhalten Sie null oder InterruptedException. Lassen Sie uns die Synchronisation fest steuern
Recommended Posts