bug-JavaArrays.fill()隐藏问题

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

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

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

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

底层原因

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

正确的写法应该是这样的

相关推荐
约翰先森不喝酒17 小时前
Android BUG 之 Program type already present: MTT.ThirdAppInfoNew
bug
皮皮宽21 小时前
数字IC开发:布局布线
fpga开发·bug·verilog·数字电路设计
Mr. zhihao1 天前
记录 Maven 版本覆盖 Bug 的解决过程
java·bug·maven
淡暗云之遥1 天前
XCode16.0 Command PhaseScriptExecution failed with a nonzero exit code 的错误
ios·bug·xcode·swift
小白鼠零号2 天前
Bug|空心病,不知道自己要干什么
bug
Monkey_Xuan3 天前
Unity中使用UnityEvent遇到Bug
unity·游戏引擎·bug
韬小志3 天前
[BUG]warn(f“Failed to load image Python extension: {e}“)的解决办法
bug
集电极3 天前
[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist
bug
睡觉待开机3 天前
bug记录, 构造与赋值???zzg::list<int> l; l = { 1, 2, 3 };为什么没写对应的赋值函数却可以跑?
windows·list·bug