兰林汉的驴粉丝儿 2022-12-15 17:39 采纳率: 50%
浏览 11

java 使用线程池 添加随机数demo

初学多线程,练习java使用线程池添加随机数
如图代码,运行完集合长度总是不到10万,

img

img

添加一行打印,长度就是10万

img

img

一开始以为遇到了代码中的“波粒二象性”,当我想观测哪条没添加时,集合的概率云就坍缩了,后来想到可能是计算机处理太快,加一句打印就延迟了添加进集合这一步骤,所以尝试着用同步代码块锁住,结果无效:

img

这时候想是不是要在循环外部锁住,因为以前看过内外两层锁的处理方式,结果仍然无效:

img

请问这个问题的出现原因以及怎样解决?

  • 写回答

1条回答 默认 最新

  • miukoo 2022-12-15 19:42
    关注

    44行shutdown()方法哪一行之前,添加Thread.sleep(3000);

    评论

报告相同问题?

问题事件

  • 创建了问题 12月15日