繁体   English   中英

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

[英]java generated parallel IntStream(and other stream) issues

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);
                    });
}

在我看来,生成器应调用5次(限制),而使用者应在多个线程中执行,但是生成器应调用512次,并且使用者在同一线程中执行,任何人都可以向我解释其错误或我未使用正确的方式?

输出:[generator]:ForkJoinPool.commonPool-worker-3,项目:3 [generator]:ForkJoinPool.commonPool-worker-3,项目:5 [generator]:ForkJoinPool.commonPool-worker-3,项目:6 [generator] :ForkJoinPool.commonPool-worker-3,项目:7 [generator]:ForkJoinPool.commonPool-worker-3,项目:8 [generator]:ForkJoinPool.commonPool-worker-3,项目:9 [generator]:ForkJoinPool.commonPool- worker-3,项目:10 [generator]:ForkJoinPool.commonPool-worker-2,项目:4 [generator]:main,项目:2 [generator]:ForkJoinPool.commonPool-worker-1,item:1 [generator]: main,项目:13 [generator]:ForkJoinPool.commonPool-worker-2,项目:12 [generator]:ForkJoinPool.commonPool-worker-3,项目:11 [generator]:ForkJoinPool.commonPool-worker-2,项目:16 [generator]:main,项目:15 [generator]:ForkJoinPool.commonPool-worker-1,项目:14 [generator]:main,项目:19 [generator]:ForkJoinPool.commonPool-worker-2,项目:18 [generator ]:ForkJoinPool.commonPool-worker-3,项目:17 [生成器]:ForkJoinPool.c ommonPool-worker-2,项目:22 [generator]:ForkJoinPool.commonPool-worker-2,项目:24 [generator]:ForkJoinPool.commonPool-worker-2,项目:25 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:26 [generator]:ForkJoinPool.commonPool-worker-2,项目:27 [generator]:ForkJoinPool.commonPool-worker-2,项目:28 [generator]:ForkJoinPool.commonPool-worker-2,项目:29 [生成器:: ForkJoinPool.commonPool-worker-2,项目:30 [generator]:ForkJoinPool.commonPool-worker-2,项目:31 [generator]:ForkJoinPool.commonPool-worker-2,项目:32 [generator]:ForkJoinPool。 commonPool-worker-2,项目:33 [generator]:ForkJoinPool.commonPool-worker-2,项目:34 [generator]:ForkJoinPool.commonPool-worker-2,项目:35 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:36 [generator]:ForkJoinPool.commonPool-worker-2,项目:37 [generator]:ForkJoinPool.commonPool-worker-2,项目:38 [generator]:ForkJoinPool.commonPool-worker-2,项目:39 [生成器]:ForkJoinPool.commonPool-worker-2,项目:40 [ge nerator]:ForkJoinPool.commonPool-worker-2,项目:41 [generator]:ForkJoinPool.commonPool-worker-2,项目:42 [generator]:ForkJoinPool.commonPool-worker-2,项目:43 [generator]:ForkJoinPool。 commonPool-worker-2,项目:44 [generator]:ForkJoinPool.commonPool-worker-2,项目:45 [generator]:ForkJoinPool.commonPool-worker-2,项目:46 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:47 [generator]:ForkJoinPool.commonPool-worker-2,项目:48 [generator]:ForkJoinPool.commonPool-worker-2,项目:49 [generator]:ForkJoinPool.commonPool-worker-2,项目:50 [生成器:: ForkJoinPool.commonPool-worker-2,项目:51 [generator]:ForkJoinPool.commonPool-worker-2,项目:52 [generator]:ForkJoinPool.commonPool-worker-2,项目:53 [generator]:ForkJoinPool。 commonPool-worker-2,项目:54 [generator]:ForkJoinPool.commonPool-worker-2,项目:55 [generator]:ForkJoinPool.commonPool-worker-2,项目:56 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:57 [发电机]:ForkJoinPool.common Pool-worker-2,项目:58 [generator]:ForkJoinPool.commonPool-worker-2,项目:59 [generator]:ForkJoinPool.commonPool-worker-2,项目:60 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:61 [generator]:ForkJoinPool.commonPool-worker-2,项目:62 [generator]:ForkJoinPool.commonPool-worker-2,项目:63 [generator]:ForkJoinPool.commonPool-worker-2,项目:64 [生成器:: ForkJoinPool.commonPool-worker-2,项目:65 [generator]:ForkJoinPool.commonPool-worker-2,项目:66 [generator]:ForkJoinPool.commonPool-worker-2,项目:67 [generator]:ForkJoinPool。 commonPool-worker-2,项目:68 [generator]:ForkJoinPool.commonPool-worker-2,项目:69 [generator]:ForkJoinPool.commonPool-worker-2,项目:70 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:71 [generator]:ForkJoinPool.commonPool-worker-2,项目:72 [generator]:ForkJoinPool.commonPool-worker-2,项目:73 [generator]:ForkJoinPool.commonPool-worker-2,项目:74 [生成器]:ForkJoinPool.commonPool-worker-2,项目:75 [生成 或]:ForkJoinPool.commonPool-worker-2,项目:76 [generator]:ForkJoinPool.commonPool-worker-2,项目:77 [generator]:ForkJoinPool.commonPool-worker-2,项目:78 [generator]:ForkJoinPool。 commonPool-worker-2,项目:79 [generator]:ForkJoinPool.commonPool-worker-2,项目:80 [generator]:ForkJoinPool.commonPool-worker-2,项目:81 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:82 [generator]:ForkJoinPool.commonPool-worker-2,项目:83 [generator]:ForkJoinPool.commonPool-worker-2,项目:84 [generator]:ForkJoinPool.commonPool-worker-2,项目:85 [生成器:: ForkJoinPool.commonPool-worker-2,项目:86 [generator]:ForkJoinPool.commonPool-worker-2,项目:87 [generator]:ForkJoinPool.commonPool-worker-2,项目:88 [generator]:ForkJoinPool。 commonPool-worker-2,项目:89 [generator]:ForkJoinPool.commonPool-worker-2,项目:90 [generator]:ForkJoinPool.commonPool-worker-2,项目:91 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:92 [generator]:ForkJoinPool.commonPool- worker-2,项目:93 [generator]:ForkJoinPool.commonPool-worker-2,项目:94 [generator]:ForkJoinPool.commonPool-worker-2,项目:95 [generator]:ForkJoinPool.commonPool-worker-2,项目:96 [generator]:ForkJoinPool.commonPool-worker-2,项目:97 [generator]:ForkJoinPool.commonPool-worker-2,项目:98 [generator]:ForkJoinPool.commonPool-worker-2,项目:99 [generator] :ForkJoinPool.commonPool-worker-2,项目:100 [generator]:ForkJoinPool.commonPool-worker-2,项目:101 [generator]:ForkJoinPool.commonPool-worker-2,项目:102 [generator]:ForkJoinPool.commonPool- worker-2,项目:103 [generator]:ForkJoinPool.commonPool-worker-2,项目:104 [generator]:ForkJoinPool.commonPool-worker-2,项目:105 [generator]:ForkJoinPool.commonPool-worker-2,项目:106 [generator]:ForkJoinPool.commonPool-worker-2,项目:107 [generator]:ForkJoinPool.commonPool-worker-2,项目:108 [generator]:ForkJoinPool.commonPool-worker-2,项目:109 [generator] :ForkJoinPool.commonPool-worker-2,项目:110 [g 生成器]:ForkJoinPool.commonPool-worker-2,项目:111 [generator]:ForkJoinPool.commonPool-worker-2,项目:112 [generator]:ForkJoinPool.commonPool-worker-2,项目:113 [generator]:ForkJoinPool。 commonPool-worker-2,项目:114 [generator]:ForkJoinPool.commonPool-worker-2,项目:115 [generator]:ForkJoinPool.commonPool-worker-2,项目:116 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:117 [generator]:ForkJoinPool.commonPool-worker-2,项目:118 [generator]:ForkJoinPool.commonPool-worker-2,项目:119 [generator]:ForkJoinPool.commonPool-worker-2,项目:120 [生成器:: ForkJoinPool.commonPool-worker-2,项目:121 [generator]:ForkJoinPool.commonPool-worker-2,项目:122 [generator]:ForkJoinPool.commonPool-worker-2,项目:123 [generator]:ForkJoinPool。 commonPool-worker-2,项目:124 [generator]:ForkJoinPool.commonPool-worker-2,项目:125 [generator]:ForkJoinPool.commonPool-worker-2,项目:126 [generator]:ForkJoinPool.commonPool-worker-2 ,项目:127 [发电机]:F orkJoinPool.commonPool-worker-2,项目:128 [generator]:ForkJoinPool.commonPool-worker-2,项目:129 [generator]:ForkJoinPool.commonPool-worker-2,项目:130 [generator]:ForkJoinPool.commonPool-worker -2,项目:131 [generator]:ForkJoinPool.commonPool-worker-2,项目:132 [generator]:ForkJoinPool.commonPool-worker-2,项目:133 [generator]:ForkJoinPool.commonPool-worker-2,项目: 134 [generator]:ForkJoinPool.commonPool-worker-2,项目:135 [generator]:ForkJoinPool.commonPool-worker-2,项目:136 [generator]:ForkJoinPool.commonPool-worker-2,项目:137 [generator]: ForkJoinPool.commonPool-worker-2,项目:138 [generator]:ForkJoinPool.commonPool-worker-2,项目:139 [generator]:ForkJoinPool.commonPool-worker-2,项目:140 [generator]:ForkJoinPool.commonPool-worker -2,项目:141 [generator]:ForkJoinPool.commonPool-worker-2,项目:142 [generator]:ForkJoinPool.commonPool-worker-2,项目:143 [generator]:ForkJoinPool.commonPool-worker-2,项目: 144 [发电机]:ForkJoinPool.co mmonPool-worker-2,项目:145 [generator]:ForkJoinPool.commonPool-worker-2,项目:146 [consumer]:ForkJoinPool.commonPool-worker-2,项目:4 [consumer]:ForkJoinPool.commonPool-worker-2 ,项目:12 [消费者]:ForkJoinPool.commonPool-worker-2,项目:16 [消费者]:ForkJoinPool.commonPool-worker-2,项目:18 [消费者]:ForkJoinPool.commonPool-worker-2,项目:22 [发电机]:main,项目:21 [发电机]:main,项目:147 [发电机]:main,项目:148 [发电机]:main,项目:149 [发电机]:main,项目:150 [发电机]:main,项目:151 [发电机]:主,项目:152 [发电机]:主,项目:153 [发电机]:主,项目:154 [发电机]:主,项目:155 [发电机]:主,项目:156 [发电机] ]:main,项目:157 [generator]:main,项目:158 [generator]:main,项目:159 [generator]:main,项目:160 [generator]:main,项目:161 [generator]:main,项目:162 [发电机]:主,项目:163 [发电机]:主,项目:164 [发电机]:主,项目:165 [发电机]:主,项目:166 [发电机]:m ain,项目:167 [发电机]:主,项目:168 [发电机]:主,项目:169 [发电机]:主,项目:170 [发电机]:主,项目:171 [发电机]:主,项目:172 [发电机]:主,项目:173 [发电机]:主,项目:174 [发电机]:主,项目:175 [发电机]:主,项目:176 [发电机]:主,项目:177 [发电机]:主,项目:178 [generator]:主要,项目:179 [generator]:主要,项目:180 [generator]:主要,项目:181 [generator]:主要,项目:182 [generator]:主要,项目:183 [发电机:主,项目:184 [发电机]:主,项目:185 [发电机]:主,项目:186 [发电机]:主,项目:187 [发电机]:主,项目:188 [发电机]:主,项目:189 [发电机]:主,项目:190 [发电机]:主,项目:191 [发电机]:主,项目:192 [发电机]:主,项目:193 [发电机]:主,项目:194 [发电机] ]:main,项:195 [generator]:main,项:196 [generator]:main,项:197 [generator]:main,项:198 [generator]:main,项:199 [generator]:main,项: 200 [发电机]:主,项目:201 [发电机]:主,项目:202 [发电机]:主,项目:203 [发电机]:主,项目:204 [发电机]:主,项目:205 [发电机]:主要,项目:206 [generator]:主要,项目:207 [generator]:主要,项目:208 [generator]:主要,项目:209 [generator]:主要,项目:210 [generator]:主要,项目:211 [发电机]:主,项目:212 [发电机]:主,项目:213 [发电机]:主,项目:214 [发电机]:主,项目:215 [发电机]:主,项目:216 [发电机]:主,item:217 [generator]:main,item:218 [generator]:main,item:219 [generator]:main,item:220 [generator]:main,item:221 [generator]:main,item:222 [发电机]:主,项目:223 [发电机]:主,项目:224 [发电机]:主,项目:225 [发电机]:主,项目:226 [发电机]:主,项目:227 [发电机]:主,项目:228 [发电机]:主,项目:229 [发电机]:主,项目:230 [发电机]:主,项目:231 [发电机]:主,项目:232 [发电机]:主,项目:233 [发电机] 发电机]:主设备,项目:234 [发电机]:主设备,项目:235 [发电机]:主设备,项目:236 [发电机]:主设备,项目:237 [发电机]:主设备,项目:238 [发电机]:主设备,项目:239 [发电机]:主,项目:240 [发电机]:主,项目:241 [发电机]:主,项目:242 [发电机]:主,项目:243 [发电机]:主,项目:244 [发电机] ]:main,项:245 [generator]:main,项:246 [generator]:main,项:247 [generator]:main,项:248 [generator]:main,项:249 [generator]:main,项:250 [发电机]:主,项目:251 [发电机]:主,项目:252 [发电机]:主,项目:253 [发电机]:主,项目:254 [发电机]:ForkJoinPool.commonPool-worker-1,项目:20 [generator]:ForkJoinPool.commonPool-worker-1,项目:256 [generator]:ForkJoinPool.commonPool-worker-1,项目:257 [generator]:ForkJoinPool.commonPool-worker-1,项目:258 [generator ]:ForkJoinPool.commonPool-worker-1,项目:259 [generator]:ForkJoinPool.commonPool-worker-1,项目:260 [generator]:ForkJoinPool.c ommonPool-worker-1,项目:261 [generator]:ForkJoinPool.commonPool-worker-1,项目:262 [generator]:ForkJoinPool.commonPool-worker-1,项目:263 [generator]:ForkJoinPool.commonPool-worker-1 ,项目:264 [generator]:ForkJoinPool.commonPool-worker-1,项目:265 [generator]:ForkJoinPool.commonPool-worker-1,项目:266 [generator]:ForkJoinPool.commonPool-worker-1,项目:267 [生成器:: ForkJoinPool.commonPool-worker-1,项:268 [generator]:ForkJoinPool.commonPool-worker-1,项:269 [generator]:ForkJoinPool.commonPool-worker-1,项:270 [generator]:ForkJoinPool。 commonPool-worker-1,项目:271 [generator]:ForkJoinPool.commonPool-worker-1,项目:272 [generator]:ForkJoinPool.commonPool-worker-1,项目:273 [generator]:ForkJoinPool.commonPool-worker-1 ,项目:274 [generator]:ForkJoinPool.commonPool-worker-1,项目:275 [generator]:ForkJoinPool.commonPool-worker-1,项目:276 [generator]:ForkJoinPool.commonPool-worker-1,项目:277 [生成器]:ForkJoinPool.commonPool-work er-1,项目:278 [generator]:ForkJoinPool.commonPool-worker-1,项目:279 [generator]:ForkJoinPool.commonPool-worker-1,项目:280 [generator]:ForkJoinPool.commonPool-worker-1,项目:281 [generator]:ForkJoinPool.commonPool-worker-1,项目:282 [generator]:ForkJoinPool.commonPool-worker-1,项目:283 [generator]:ForkJoinPool.commonPool-worker-1,项目:284 [generator] :ForkJoinPool.commonPool-worker-1,项目:285 [generator]:ForkJoinPool.commonPool-worker-1,项目:286 [generator]:ForkJoinPool.commonPool-worker-1,项目:287 [generator]:ForkJoinPool.commonPool- worker-1,项目:288 [generator]:ForkJoinPool.commonPool-worker-1,项目:289 [generator]:ForkJoinPool.commonPool-worker-1,项目:290 [generator]:ForkJoinPool.commonPool-worker-1,项目:291 [generator]:ForkJoinPool.commonPool-worker-1,项目:292 [generator]:ForkJoinPool.commonPool-worker-1,项目:293 [generator]:ForkJoinPool.commonPool-worker-1,项目:294 [generator] :ForkJoinPool.commonPool-worker-1,项目:295 [generator]:ForkJoinPool.commonPool-worker-1,项目:296 [generator]:ForkJoinPool.commonPool-worker-1,项目:297 [generator]:ForkJoinPool.commonPool-worker-1,项目:298 [generator]:ForkJoinPool .commonPool-worker-1,项目:299 [generator]:ForkJoinPool.commonPool-worker-1,项目:300 [generator]:ForkJoinPool.commonPool-worker-1,项目:301 [generator]:ForkJoinPool.commonPool-worker- 1,项目:302 [generator]:ForkJoinPool.commonPool-worker-1,项目:303 [generator]:ForkJoinPool.commonPool-worker-1,项目:304 [generator]:ForkJoinPool.commonPool-worker-1,项目:305 [generator]:ForkJoinPool.commonPool-worker-1,项目:306 [generator]:ForkJoinPool.commonPool-worker-1,项目:307 [generator]:ForkJoinPool.commonPool-worker-1,项目:308 [generator]:ForkJoinPool .commonPool-worker-1,项目:309 [generator]:ForkJoinPool.commonPool-worker-1,项目:310 [generator]:ForkJoinPool.commonPool-worker-1,项目:311 [generator]:ForkJoinPool.commonPool-worker- 1,项目:312 [发电机] ForkJoinPool.commonPool-worker-1,项目:313 [generator]:ForkJoinPool.commonPool-worker-1,项目:314 [generator]:ForkJoinPool.commonPool-worker-1,项目:315 [generator]:ForkJoinPool.commonPool-worker -1,项目:316 [generator]:ForkJoinPool.commonPool-worker-1,项目:317 [generator]:ForkJoinPool.commonPool-worker-1,项目:318 [generator]:ForkJoinPool.commonPool-worker-1,项目: 319 [generator]:ForkJoinPool.commonPool-worker-1,项目:320 [generator]:ForkJoinPool.commonPool-worker-1,项目:321 [generator]:ForkJoinPool.commonPool-worker-1,项目:322 [generator]: ForkJoinPool.commonPool-worker-1,项目:323 [generator]:ForkJoinPool.commonPool-worker-1,项目:324 [generator]:ForkJoinPool.commonPool-worker-1,项目:325 [generator]:ForkJoinPool.commonPool-worker -1,项目:326 [generator]:ForkJoinPool.commonPool-worker-1,项目:327 [generator]:ForkJoinPool.commonPool-worker-1,项目:328 [generator]:ForkJoinPool.commonPool-worker-1,项目: 329 [generator]:ForkJoinPool .commonPool-worker-1,项目:330 [generator]:ForkJoinPool.commonPool-worker-1,项目:331 [generator]:ForkJoinPool.commonPool-worker-1,项目:332 [generator]:ForkJoinPool.commonPool-worker- 1,项目:333 [generator]:ForkJoinPool.commonPool-worker-1,项目:334 [generator]:ForkJoinPool.commonPool-worker-1,项目:335 [generator]:ForkJoinPool.commonPool-worker-1,项目:336 [generator]:ForkJoinPool.commonPool-worker-1,项目:337 [generator]:ForkJoinPool.commonPool-worker-1,项目:338 [generator]:ForkJoinPool.commonPool-worker-1,项目:339 [generator]:ForkJoinPool .commonPool-worker-1,项目:340 [generator]:ForkJoinPool.commonPool-worker-1,项目:341 [generator]:ForkJoinPool.commonPool-worker-1,项目:342 [generator]:ForkJoinPool.commonPool-worker- 1,项目:343 [generator]:ForkJoinPool.commonPool-worker-1,项目:344 [generator]:ForkJoinPool.commonPool-worker-1,项目:345 [generator]:ForkJoinPool.commonPool-worker-1,项目:346 [生成器]:ForkJoinPool.commonPool-wo rker-1,项目:347 [发电机]:主,项目:255 [发电机]:主,项目:349 [发电机]:主,项目:350 [发电机]:主,项目:351 [发电机]:主,项目:352 [发电机]:主,项目:353 [发电机]:主,项目:354 [发电机]:主,项目:355 [发电机]:主,项目:356 [发电机]:ForkJoinPool.commonPool-worker-3,项目:23 [发电机]:主,项目:357 [发电机]:主,项目:359 [发电机]:主,项目:360 [发电机]:ForkJoinPool.commonPool-worker-1,项目:348 [发电机]:ForkJoinPool .commonPool-worker-1,项目:362 [generator]:ForkJoinPool.commonPool-worker-1,项目:363 [generator]:ForkJoinPool.commonPool-worker-1,项目:364 [generator]:ForkJoinPool.commonPool-worker- 1,项目:365 [generator]:ForkJoinPool.commonPool-worker-1,项目:366 [generator]:ForkJoinPool.commonPool-worker-1,项目:367 [generator]:ForkJoinPool.commonPool-worker-1,项目:368 [发电机]:ForkJoinPool.commonPool-worker-1,项目:369 [发电机]:ForkJoinPool.commonPool-worke r-1,项目:370 [generator]:ForkJoinPool.commonPool-worker-1,项目:371 [generator]:ForkJoinPool.commonPool-worker-1,项目:372 [generator]:ForkJoinPool.commonPool-worker-1,项目:373 [generator]:ForkJoinPool.commonPool-worker-1,项目:374 [generator]:ForkJoinPool.commonPool-worker-1,项目:375 [generator]:ForkJoinPool.commonPool-worker-1,项目:376 [generator] :ForkJoinPool.commonPool-worker-1,项目:377 [generator]:ForkJoinPool.commonPool-worker-1,项目:378 [generator]:ForkJoinPool.commonPool-worker-1,项目:379 [generator]:ForkJoinPool.commonPool- worker-1,项目:380 [generator]:ForkJoinPool.commonPool-worker-1,项目:381 [generator]:ForkJoinPool.commonPool-worker-1,项目:382 [generator]:ForkJoinPool.commonPool-worker-1,项目:383 [generator]:ForkJoinPool.commonPool-worker-1,项目:384 [generator]:ForkJoinPool.commonPool-worker-1,项目:385 [generator]:ForkJoinPool.commonPool-worker-1,项目:386 [generator] :ForkJoinPool.commonPool-worker-1,项目:387 [发电机]:ForkJoinPool.commonPool-worker-1,项目:388 [发电机]:ForkJoinPool.commonPool-worker-1,项目:389 [发电机]:ForkJoinPool.commonPool-worker-1,项目:390 [发电机]:ForkJoinPool .commonPool-worker-1,项目:391 [generator]:ForkJoinPool.commonPool-worker-1,项目:392 [generator]:ForkJoinPool.commonPool-worker-1,项目:393 [generator]:main,项目:361 [生成器:: main,项:394 [generator]:main,项:395 [generator]:ForkJoinPool.commonPool-worker-3,项:358 [generator]:ForkJoinPool.commonPool-worker-3,项:396 [generator] :ForkJoinPool.commonPool-worker-3,项目:397 [generator]:ForkJoinPool.commonPool-worker-3,项目:398 [generator]:ForkJoinPool.commonPool-worker-3,项目:399 [generator]:ForkJoinPool.commonPool- worker-3,项目:400 [generator]:ForkJoinPool.commonPool-worker-3,项目:401 [generator]:ForkJoinPool.commonPool-worker-3,项目:402 [generator]:ForkJoinPool.commonPool-worker-3,项目:403 [生成器]:ForkJoinPool.commonPool-w orker-3,项目:404 [generator]:ForkJoinPool.commonPool-worker-3,项目:405 [generator]:ForkJoinPool.commonPool-worker-3,项目:406 [generator]:ForkJoinPool.commonPool-worker-3,项目:407 [发电机]:ForkJoinPool.commonPool-worker-3,项目:408 [发电机]:ForkJoinPool.commonPool-worker-3,项目:409 [发电机]:ForkJoinPool.commonPool-worker-3,项目:410 [发电机] :ForkJoinPool.commonPool-worker-3,项目:411 [generator]:ForkJoinPool.commonPool-worker-3,项目:412 [generator]:ForkJoinPool.commonPool-worker-3,项目:413 [generator]:ForkJoinPool.commonPool- worker-3,项目:414 [generator]:ForkJoinPool.commonPool-worker-3,项目:415 [generator]:ForkJoinPool.commonPool-worker-3,项目:416 [generator]:ForkJoinPool.commonPool-worker-3,项目:417 [发电机]:ForkJoinPool.commonPool-worker-3,项目:418 [发电机]:ForkJoinPool.commonPool-worker-3,项目:419 [发电机]:ForkJoinPool.commonPool-worker-3,项目:420 [发电机] :ForkJoinPool.commonPool-worker-3,项目: 421 [generator]:ForkJoinPool.commonPool-worker-3,项目:422 [generator]:ForkJoinPool.commonPool-worker-3,项目:423 [generator]:ForkJoinPool.commonPool-worker-3,项目:424 [generator]: ForkJoinPool.commonPool-worker-3,项目:425 [generator]:ForkJoinPool.commonPool-worker-3,项目:426 [generator]:ForkJoinPool.commonPool-worker-3,项目:427 [generator]:ForkJoinPool.commonPool-worker -3,项目:428 [generator]:ForkJoinPool.commonPool-worker-3,项目:429 [generator]:ForkJoinPool.commonPool-worker-3,项目:430 [generator]:ForkJoinPool.commonPool-worker-3,项目: 431 [generator]:ForkJoinPool.commonPool-worker-3,项目:432 [generator]:ForkJoinPool.commonPool-worker-3,项目:433 [generator]:ForkJoinPool.commonPool-worker-3,项目:434 [generator]: ForkJoinPool.commonPool-worker-3,项目:435 [generator]:ForkJoinPool.commonPool-worker-3,项目:436 [generator]:ForkJoinPool.commonPool-worker-3,项目:437 [generator]:ForkJoinPool.commonPool-worker -3,项目:438 [发电机 ]:ForkJoinPool.commonPool-worker-3,项目:439 [generator]:ForkJoinPool.commonPool-worker-3,项目:440 [generator]:ForkJoinPool.commonPool-worker-3,项目:441 [generator]:ForkJoinPool.commonPool -worker-3,项目:442 [generator]:ForkJoinPool.commonPool-worker-3,项目:443 [generator]:ForkJoinPool.commonPool-worker-3,项目:444 [generator]:ForkJoinPool.commonPool-worker-3,项目:445 [generator]:ForkJoinPool.commonPool-worker-3,项目:446 [generator]:ForkJoinPool.commonPool-worker-3,项目:447 [generator]:ForkJoinPool.commonPool-worker-3,项目:448 [generator ]:ForkJoinPool.commonPool-worker-3,项目:449 [generator]:ForkJoinPool.commonPool-worker-3,项目:450 [generator]:ForkJoinPool.commonPool-worker-3,项目:451 [generator]:ForkJoinPool.commonPool -worker-3,项目:452 [generator]:ForkJoinPool.commonPool-worker-3,项目:453 [generator]:ForkJoinPool.commonPool-worker-3,项目:454 [generator]:ForkJoinPool.commonPool-worker-3,项目:455 [发电机]:ForkJoinP ool.commonPool-worker-3,项目:456 [generator]:ForkJoinPool.commonPool-worker-3,项目:457 [generator]:ForkJoinPool.commonPool-worker-3,项目:458 [generator]:ForkJoinPool.commonPool-worker -3,项目:459 [generator]:ForkJoinPool.commonPool-worker-3,项目:460 [generator]:ForkJoinPool.commonPool-worker-3,项目:461 [generator]:ForkJoinPool.commonPool-worker-3,项目: 462 [发电机]:ForkJoinPool.commonPool-worker-3,项目:463 [发电机]:ForkJoinPool.commonPool-worker-3,项目:464 [发电机]:ForkJoinPool.commonPool-worker-3,项目:465 [发电机]: ForkJoinPool.commonPool-worker-3,项目:466 [generator]:ForkJoinPool.commonPool-worker-3,项目:467 [generator]:ForkJoinPool.commonPool-worker-3,项目:468 [generator]:ForkJoinPool.commonPool-worker -3,项目:469 [generator]:ForkJoinPool.commonPool-worker-3,项目:470 [generator]:ForkJoinPool.commonPool-worker-3,项目:471 [generator]:ForkJoinPool.commonPool-worker-3,项目: 472 [generator]:ForkJoinPool.commonPool -worker-3,项目:473 [generator]:ForkJoinPool.commonPool-worker-3,项目:474 [generator]:ForkJoinPool.commonPool-worker-3,项目:475 [generator]:ForkJoinPool.commonPool-worker-3,项:476 [generator]:ForkJoinPool.commonPool-worker-3,项:477 [generator]:ForkJoinPool.commonPool-worker-3,项:478 [generator]:ForkJoinPool.commonPool-worker-3,项:479 [generator ]:ForkJoinPool.commonPool-worker-3,项目:480 [generator]:ForkJoinPool.commonPool-worker-3,项目:481 [generator]:ForkJoinPool.commonPool-worker-3,项目:482 [generator]:ForkJoinPool.commonPool -worker-3,项目:483 [generator]:ForkJoinPool.commonPool-worker-3,项目:484 [generator]:ForkJoinPool.commonPool-worker-3,项目:485 [generator]:ForkJoinPool.commonPool-worker-3,项目:486 [generator]:ForkJoinPool.commonPool-worker-3,项目:487 [generator]:ForkJoinPool.commonPool-worker-3,项目:488 [generator]:ForkJoinPool.commonPool-worker-3,项目:489 [generator ]:ForkJoinPool.commonPool-worker-3,ite m:490 [generator]:ForkJoinPool.commonPool-worker-3,项目:491 [generator]:ForkJoinPool.commonPool-worker-3,项目:492 [generator]:ForkJoinPool.commonPool-worker-3,项目:493 [generator ]:ForkJoinPool.commonPool-worker-3,项目:494 [generator]:ForkJoinPool.commonPool-worker-3,项目:495 [generator]:ForkJoinPool.commonPool-worker-3,项目:496 [generator]:ForkJoinPool.commonPool -worker-3,项目:497 [generator]:ForkJoinPool.commonPool-worker-3,项目:498 [generator]:ForkJoinPool.commonPool-worker-3,项目:499 [generator]:ForkJoinPool.commonPool-worker-3,项目:500 [generator]:ForkJoinPool.commonPool-worker-3,项目:501 [generator]:ForkJoinPool.commonPool-worker-3,项目:502 [generator]:ForkJoinPool.commonPool-worker-3,项目:503 [generator ]:ForkJoinPool.commonPool-worker-3,项目:504 [generator]:ForkJoinPool.commonPool-worker-3,项目:505 [generator]:ForkJoinPool.commonPool-worker-3,项目:506 [generator]:ForkJoinPool.commonPool -worker-3,项目:507 [生成 或]:ForkJoinPool.commonPool-worker-3,项目:508 [generator]:ForkJoinPool.commonPool-worker-3,项目:509 [generator]:ForkJoinPool.commonPool-worker-3,项目:510 [generator]:ForkJoinPool。 commonPool-worker-3,项目:511 [generator]:ForkJoinPool.commonPool-worker-3,项目:512

这是一个好问题,但以某种方式很难解释。 让我们简化一下:

    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);

运行在java-8上,实际上在我的机器上可以打印512 (经常不断),但要点是,由于您通过generate使用了无序流 ,所以limit可以自由获取所需的任何部分/值; 因此,当您说自己认为发生器仅被调用5次是错误的。 流实现的感觉可以调用任意多次。

同时,java-10确实运行生成器( Supplier )的次数要少得多(并不总是 5 ),因此内部可能进行了更改,以更快地缩短操作或取消已经开始执行的任务。

只是一个疯狂的猜测,因为我对技术细节并不熟悉:

有一个线程池。 如果有工作要做,并且有空闲线程可用,则可能会重新使用它。 生成器和使用者可以使用相同的线程,但它独立发生。

正如Instream-javadocs的状态一样, IntStream.generate似乎返回[..]无限顺序无序流 ,无论这意味着什么。 我猜它只是停止生成值,因为由于垃圾回收器回合检测到没有人对结果感兴趣了。

也许您正在寻找IntStream.range(0, 5) 这也消除了对原子整数和函数副作用的需要。

在多次执行您的代码之后,这是我观察到的:

  • i.incrementAndGet()执行随机次数。 这里有一些计数:384、256、128、768、640、896、1024。但是此方法的调用次数总是可以被8整除。涉及8个线程。
  • forEach总是随机选择一个线程(可以是主线程,也可以是另一个ForkJoin池线程)并打印出它的项目。 无论您做什么,都可以订购。

我认为该API的行为正确,因为IntStream.generate更适合于生成随机数,而实际上这就是它的作用。 它的Javadoc描述是:

返回无限顺序无序流,其中每个元素由提供的{@code IntSupplier}生成。 这适用于生成恒定流,随机元素流等。

这是我用来检查行为的测试:

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);
});

我的建议是始终多次运行代码,以更好地了解正在发生的事情。 生成器被调用512次并不是完全正确的。

谢谢,我检查了Java 10.0.1:1.代码将在多个线程中工作(因此Java 8应该在单个线程中工作,并在10.0.1中修复)2.生成器调用了9次(在Intellj中进行测试,它是随机的),这是因为有多个线程获取项目,另一个线程要处理,而获取数据线程没有限制

[generator]:main,项目:1 [generator]:ForkJoinPool.commonPool-worker-2,项目:3 [consumer]:main,项目:1 [generator]:ForkJoinPool.commonPool-worker-4,项目:2 [generator ]:ForkJoinPool.commonPool-worker-13,项目:6 [generator]:main,项目:5 [generator]:ForkJoinPool.commonPool-worker-11,项目:4 [consumer]:ForkJoinPool.commonPool-worker-2,项目:3 [消费者]:主要,项目:5 [生成器]:ForkJoinPool.commonPool-worker-6,项目:9 [消费者]:ForkJoinPool.commonPool-worker-13,项目:6 [生成器]:ForkJoinPool.commonPool-worker -15,项目:8 [消费者]:ForkJoinPool.commonPool-worker-4,项目:2 [generator]:ForkJoinPool.commonPool-worker-9,项目:7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM