bug-JavaArrays.fill()隐藏问题

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

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

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

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

底层原因

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

正确的写法应该是这样的

相关推荐
tanxiaomi20 小时前
记一次雪花算法 ID 精度丢失的Bug:前端接收到的 Long 被“四舍五入”了?
bug
仰望星空的凡人20 小时前
【BUG排查】调试瑞萨RH850F1KMS1时候随机出现进入到unused_isr
bug·瑞萨·renesas
蓝蜂物联网1 天前
告别出差!蓝蜂物联网网关让PLC程序远程修改零延迟
物联网·自动化·bug
软测进阶3 天前
【第三章】软件测试缺陷管理:从判断到回归的全流程实践指南
测试工具·bug·源代码管理
lijiatu100863 天前
【ROS2】 忽略局域网多机通信导致数据接收的bug
bug·ros2
张较瘦_4 天前
[论文阅读] 软件工程 | GPS算法:用“路径摘要”当向导,软件模型检测从此告别“瞎找bug”
论文阅读·算法·bug
玩转数据库管理工具FOR DBLENS4 天前
精准测试的密码:解密等价类划分,让Bug无处可逃
数据库·单元测试·测试用例·bug·数据库开发
程序猿阿伟4 天前
《微服务架构下API网关流量控制Bug复盘:从熔断失效到全链路防护》
微服务·架构·bug
funfan05174 天前
奇怪的“bug”--数据库的“隐式转换”行为
数据库·bug
海鸥_6 天前
C++中不加{}导致的BUG
c++·bug