用户工具
登录
您在这里:
start
»
为什么i_并发有问题
您的足迹:
•
为什么i_并发有问题
为什么i++并发有问题?
因为在副本中修改,还没有来得及写回堆内存。参考
jvm内存结构
为什么不直接在堆内存中做修改操作?
因为jvm的指令模型就是这样
每个线程有自己的数据栈,计数器。这就意味着想执行指令必须先将数据复制到线程内部的私有数据栈。
第2条指令:getfield 将cnt的值复制到线程私有的数据栈
第5条指令:将1压入线程私有数据栈
第6条指令:将cnt + 1的结果写入线程私有栈顶
第7条指令:将栈顶的值更新到 cnt中
如果该线程在执行到第5,第6条指令时,被其他线程抢占了且也执行了这个函数,那就会丢失一次更新
页面工具
显示源文件
修订记录
反向链接
导出 PDF
回到顶部
跳至内容
fang qiang
站点工具
最近更改
媒体管理器
网站地图