bug-JavaArrays.fill()隐藏问题

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

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

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

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

底层原因

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

正确的写法应该是这样的

相关推荐
Mr. zhihao11 小时前
Java 反序列化中的 boolean vs Boolean 陷阱:一个真实的 Bug 修复案例
java·bug·lua
初圣魔门首席弟子11 小时前
vscode多文件编程bug记录
java·vscode·bug
-雷阵雨-1 天前
软件测试全解析:Bug生命周期与争议解决
bug
南林yan1 天前
Bug: 升级内核后有线网络无法使用
bug
月巴月巴白勺合鸟月半1 天前
一个DevExpress的Docx文件处理的Bug的解决
c#·bug
ao_lang1 天前
软件测试-BUG篇
bug
技术小黑屋_1 天前
Vibe Coding 真正的问题并不是 Bug
bug
利来利往1 天前
lua table.remove引发的偶现bug
bug·lua·table.remove
haierccc1 天前
我发现了windows的tracert命令的一个bug---ICMP重定向包详尽分析
bug
2401_841495642 天前
Windows 系统中ffmpeg安装问题的彻底解决
windows·python·ffmpeg·bug·语音识别·下载·安装步骤