java生成的并行IntStream(和其他流)问题

java生成的并行IntStream(和其他流)问题,java,parallel-processing,java-stream,generator,generate,Java,Parallel Processing,Java Stream,Generator,Generate,在我看来,生成器应该调用5次(限制),使用者应该在多个线程中执行,但是生成器调用了512次 消费者在同一个线程中执行,任何人都可以向我解释这是一个 bug或我没有使用正确的方法? 输出:[生成器]:ForkJoinPool.commonPool-worker-3,项目:3 [生成器]:ForkJoinPool.commonPool-worker-3,项目:5[生成器]: ForkJoinPool.commonPool-worker-3,项目:6[生成器]: ForkJoinPool.common

在我看来,生成器应该调用5次(限制),使用者应该在多个线程中执行,但是生成器调用了512次 消费者在同一个线程中执行,任何人都可以向我解释这是一个 bug或我没有使用正确的方法?

输出:[生成器]:ForkJoinPool.commonPool-worker-3,项目:3 [生成器]:ForkJoinPool.commonPool-worker-3,项目:5[生成器]: ForkJoinPool.commonPool-worker-3,项目:6[生成器]: ForkJoinPool.commonPool-worker-3,项目:7[生成器]: ForkJoinPool.commonPool-worker-3,项目:8[生成器]: ForkJoinPool.commonPool-worker-3,项目:9[生成器]: ForkJoinPool.commonPool-worker-3,项目:10[生成器]: ForkJoinPool.commonPool-worker-2,项目:4[生成器]:主,项目:2 [生成器]:ForkJoinPool.commonPool-worker-1,项目:1[生成器]: 主,项目:13[发电机]:ForkJoinPool.commonPool-worker-2,项目:12 [生成器]:ForkJoinPool.commonPool-worker-3,项目:11[生成器]: ForkJoinPool.commonPool-worker-2,项目:16[发电机]:主,项目:15 [生成器]:ForkJoinPool.commonPool-worker-1,项目:14[生成器]: 主,项目:19[发电机]:ForkJoinPool.commonPool-worker-2,项目:18 [生成器]:ForkJoinPool.commonPool-worker-3,项目:17[生成器]: ForkJoinPool.commonPool-worker-2,项目:22[生成器]: ForkJoinPool.commonPool-worker-2,项目:24[生成器]: ForkJoinPool.commonPool-worker-2,项目:25[生成器]: ForkJoinPool.commonPool-worker-2,项目:26[生成器]: ForkJoinPool.commonPool-worker-2,项目:27[生成器]: ForkJoinPool.commonPool-worker-2,项目:28[生成器]: ForkJoinPool.commonPool-worker-2,项目:29[生成器]: ForkJoinPool.commonPool-worker-2,项目:30[生成器]: ForkJoinPool.commonPool-worker-2,项目:31[生成器]: ForkJoinPool.commonPool-worker-2,项目:32[生成器]: ForkJoinPool.commonPool-worker-2,项目:33[发电机]: ForkJoinPool.commonPool-worker-2,项目:34[发电机]: ForkJoinPool.commonPool-worker-2,项目:35[发电机]: ForkJoinPool.commonPool-worker-2,项目:36[发电机]: ForkJoinPool.commonPool-worker-2,项目:37[生成器]: ForkJoinPool.commonPool-worker-2,项目:38[生成器]: ForkJoinPool.commonPool-worker-2,项目:39[生成器]: ForkJoinPool.commonPool-worker-2,项目:40[生成器]: ForkJoinPool.commonPool-worker-2,项目:41[生成器]: ForkJoinPool.commonPool-worker-2,项目:42[生成器]: ForkJoinPool.commonPool-worker-2,项目:43[生成器]: ForkJoinPool.commonPool-worker-2,项目:44[发电机]: ForkJoinPool.commonPool-worker-2,项目:45[生成器]: ForkJoinPool.commonPool-worker-2,项目:46[生成器]: ForkJoinPool.commonPool-worker-2,项目:47[生成器]: ForkJoinPool.commonPool-worker-2,项目:48[生成器]: ForkJoinPool.commonPool-worker-2,项目:49[生成器]: ForkJoinPool.commonPool-worker-2,项目:50[生成器]: ForkJoinPool.commonPool-worker-2,项目:51[发电机]: ForkJoinPool.commonPool-worker-2,项目:52[生成器]: ForkJoinPool.commonPool-worker-2,项目:53[生成器]: ForkJoinPool.commonPool-worker-2,项目:54[发电机]: ForkJoinPool.commonPool-worker-2,项目:55[生成器]: ForkJoinPool.commonPool-worker-2,项目:56[生成器]: ForkJoinPool.commonPool-worker-2,项目:57[发电机]: ForkJoinPool.commonPool-worker-2,项目:58[发电机]: ForkJoinPool.commonPool-worker-2,项目:59[生成器]: ForkJoinPool.commonPool-worker-2,项目:60[生成器]: ForkJoinPool.commonPool-worker-2,项目:61[生成器]: ForkJoinPool.commonPool-worker-2,项目:62[发电机]: ForkJoinPool.commonPool-worker-2,项目:63[生成器]: ForkJoinPool.commonPool-worker-2,项目:64[生成器]: ForkJoinPool.commonPool-worker-2,项目:65[发电机]: ForkJoinPool.commonPool-worker-2,项目:66[发电机]: ForkJoinPool.commonPool-worker-2,项目:67[发电机]: ForkJoinPool.commonPool-worker-2,项目:68[发电机]: ForkJoinPool.commonPool-worker-2,项目:69[生成器]: ForkJoinPool.commonPool-worker-2,项目:70[发电机]: ForkJoinPool.commonPool-worker-2,项目:71[生成器]: ForkJoinPool.commonPool-worker-2,项目:72[生成器]: ForkJoinPool.commonPool-worker-2,项目:73[生成器]: ForkJoinPool.commonPool-worker-2,项目:74[生成器]: ForkJoinPool.commonPool-worker-2,项目:75[生成器]: ForkJoinPool.commonPool-worker-2,项目:76[生成器]: ForkJoinPool.commonPool-worker-2,项目:77[生成器]: ForkJoinPool.commonPool-worker-2,项目:78[发电机]: ForkJoinPool.commonPool-worker-2,项目:79[生成器]: ForkJoinPool.commonPool-worker-2,项目:80[生成器]: ForkJoinPool.commonPool-worker-2,项目:81[生成器]: ForkJoinPool.commonPool-worker-2,项目:82[生成器]: ForkJoinPool.commonPool-worker-2,项目:83[生成器]: ForkJoinPool.commonPool-worker-2,项目:84[生成器]: ForkJoinPool.commonPool-worker-2,项目:85[发电机]: ForkJoinPool.commonPool-worker-2,项目:86[生成器]: ForkJoinPool.commonPool-worker-2,项目:87[生成器]: ForkJoinPool.commonPool-worker-2,项目:88[生成器]: ForkJoinPool.commonPool-worker-2,项目:89[生成器]: ForkJoinPool.commonPool-worker-2,项目:90[生成器]: ForkJoinPool.commonPool-worker-2,项目:91[生成器]: ForkJoinPool.commonPool-worker-2,项目:92[生成器]: ForkJoinPool.commonPool-worker-2,项目:93[生成器]: ForkJoinPool.commonPool-worker-2,项目:94[发电机]: ForkJoinPool.commonPool-worker-2,项目:95[生成器]: ForkJoinPool.commonPool-worker-2,项目:96[生成器]: ForkJoinPool.commonPool-worker-2,项目:97[生成器]: ForkJoinPool.commonPool-worker-2,项目:98[生成器]: ForkJoinPool.commonPool-worker-2,项目:99[生成器]: ForkJoinPool.commonPool-worker-2,项目:100[生成器]: ForkJoinPool.commonPool-worker-2,项目:
public static void main(String[] args) throws Throwable {
    AtomicInteger i = new AtomicInteger();
    IntStream
            .generate(
                    () -> {
                        int item = i.incrementAndGet();
                        System.out.println("[generator]: "
                                + Thread.currentThread().getName()
                                + ", item:" + item);
                        return item;
                    })
            .limit(5)
            .parallel()
            .forEach(
                    item -> {
                        System.out.println("[consumer]: "
                                + Thread.currentThread().getName()
                                + ", item:" + item);
                    });
}
IntStream.range(0, 20).forEach(c -> {
    AtomicInteger i = new AtomicInteger();
    IntStream
            .generate(
                    () -> {
                        int item = i.incrementAndGet();
//                            System.out.println("[generator]: "
//                                    + Thread.currentThread().getName()
//                                    + ", item:" + item);
                        return item;
                    })
            .limit(5)
            .parallel()
            .forEach(
                    item -> {
                        System.out.println("[consumer]: "
                                + Thread.currentThread().getName()
                                + ", item:" + item);
                    });
    System.out.println(i);
    System.out.println(i.intValue() % 8);
});
    AtomicInteger i = new AtomicInteger(0);
    AtomicInteger count = new AtomicInteger(0);
    IntStream.generate(() -> i.incrementAndGet())
            .parallel()
            .peek(x -> count.incrementAndGet())
            .limit(5)
            .forEach(System.out::println);

    System.out.println("count = " + count);