0

我正在我的loom-lab项目中试验虚拟线程,并想看看在执行并行流时虚拟线程是否比平台线程快,但实际上它似乎更慢。

try (var executorService = Executors.newThreadPerTaskExecutor(virtualThreadFactory)) {
    var candidates3 = LongStream.iterate(3, x -> x < count, x -> x + 2);
    time4 = System.currentTimeMillis();
    var primes3 = executorService.submit(() ->
        candidates3.parallel()
            .filter(candidate -> isPrime(candidate)).toArray()
    ).get();
    time5 = System.currentTimeMillis();
}

最终我得到输出的地方(以毫秒为单位)

sequential time = 7546
parallel   time = 1289
virtual    time = 1388

并且通常使用虚拟线程比常见的 ForkJoinPool 慢。我是否在某处犯了一些基本错误或误解,或者 Project Loom 尚未与 Java Streams 集成?

4

0 回答 0