bug-JavaArrays.fill()隐藏问题

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

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

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

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

底层原因

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

正确的写法应该是这样的

相关推荐
Kisorge7 小时前
【C语言】代码BUG排查方式
c语言·开发语言·bug
安卓机器12 小时前
探索 Python编程 调试案例:配置日志记录器查看程序运行bug
bug
树懒_Zz2 天前
记录 io.springfox 3.0.0 整合 spring boot 2.6.x 由于 springfox bug 引发问题
windows·spring boot·bug
每天进步一大步3 天前
webSokect安卓和web适配的Bug 适用实时语音场景
android·前端·bug·web
JWASX3 天前
【BUG记录】Apifox 参数传入 + 号变成空格的 BUG
java·bug·urlencoder·urldecoder
初遇你时动了情3 天前
解决react 路由切换,页面闪屏的bug
javascript·react.js·bug
老赵的博客3 天前
QString转const char* bug
bug
andlbds4 天前
解决PCL库中pcl::VoxelGrid降采样Bug
c++·bug
乌漆嘎嘎黑4 天前
XIO: fatal IO error 22 (Invalid argument) on X server “localhost:10.0“【小白找bug】
pytorch·python·bug·matplotlib·mobaxterm
curd_boy5 天前
【BUG】记一次context canceled的报错
golang·bug