请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

并行流这节的代码在jdk10中运行没有结果,也不报错,用8就没问题,jdk10对8兼容性问题?

IntStream.range(1,100).peek(Demo6::debug).count();

public static void debug(int i) {
   System.out.println(Thread.currentThread().getName() + " " + " debug " + i);
   try {
       TimeUnit.SECONDS.sleep(3);
   } catch (InterruptedException e) {
       e.printStackTrace();
   }
}

jdk10运行不会产生结果,8就没有问题

https://img1.sycdn.imooc.com//szimg/5b2a3a020001ea1116950752.jpg

https://img1.sycdn.imooc.com//szimg/5b2a3a020001270817080901.jpg


正在回答

4回答

你好。我看了一下jdk10的count方法,上面注释说了原因。确实不会执行peek。他的说法是peek不会影响数据。count只需要知道个数。会跳过。jdk8不会。

这确实很特殊啊。谢谢你的测试。

但是count改成sum的话就会打印??

2 回复 有任何疑惑可以回复我~
  • 提问者 狗熊下棋 #1
    学到了,非常感谢老师的尽心回答!老师的课程的确精品
    回复 有任何疑惑可以回复我~ 2018-06-20 22:20:21
  • 晓风轻 回复 提问者 狗熊下棋 #2
    谢谢支持
    回复 有任何疑惑可以回复我~ 2018-06-20 22:24:03
晓风轻 2018-06-20 20:08:17

其实是没有执行peek,结果是有的。你可以把count打印出来

0 回复 有任何疑惑可以回复我~
晓风轻 2018-06-20 19:42:57

你好,我测试了一下。确实日志没有打印。。。我查查什么原因

0 回复 有任何疑惑可以回复我~
晓风轻 2018-06-20 18:37:15

不会有兼容问题。肯定兼容之前版本的。

0 回复 有任何疑惑可以回复我~
  • 提问者 狗熊下棋 #1
    老师,我在问题里补充了两张截图,一张是jdk10运行,一张是jdk8运行的,确实在10没有结果
    回复 有任何疑惑可以回复我~ 2018-06-20 19:28:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信