bug-JavaArrays.fill()隐藏问题

对于一个数组想要初始一样的值,我们经常会这样编写。全部进行复制1,但是你有没有考虑过,如果是一个对象数组呢?

如果也是new Thread,这个是有五个线程,还是一个线程?

这是我在今天做哲学家问题时候遇到的

最后dug后返现只有一个信号量。

底层原因

可以发现Arrays.fill() 本质就是等于复制,所有的a都是共享的一个val,那么也就不难理解了,为什么会出现这样的问题。你只是new了一个线程,这个线程数组里面的线程都指向了这个地址。

正确的写法应该是这样的

相关推荐
王家视频教程图书馆2 小时前
修复服务端500相应,修复客户端上传文件.tmp 服务端接受不到文件bug
bug
qq_401700413 小时前
Qt开发过程中遇到哪些经典的bug
qt·bug
0白露2 天前
关闭搜狗输入法右下角广告,可以适用于大多数应用系统通知的广告
windows·bug
一只自律的鸡3 天前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
Lichenpar4 天前
Springboot采用FastJson2作为MessageConverter时,配置的全局日期类型序列化转换BUG
java·开发语言·bug
Irene19915 天前
AI 找 bug 的局限性 和 Deepseek 优势明显
bug
癫狂的兔子5 天前
【bug】【Python】pandas中的DataFrame.to_excel()和ExcelWriter的区别
python·bug
癫狂的兔子6 天前
【BUG】【Python】【Spider】Compound class names are not allowed.
开发语言·python·bug
netkiller-BG7NYT6 天前
阿里云语音合成CosyVoice重大BUG被我发现了
bug
马猴烧酒.7 天前
【Mybatis出现bug】应为 <statement> 或 DELIMITER,得到 ‘id‘
java·bug·mybatis