chengqianl 2010-03-23 14:20
浏览 219
已采纳

线程的内存模型的疑问

class Act {

   private static int k=1;

public static void doMathForever() {
    for (int i=0;i<10;i++) {
        k+=i;
    }
}

} jvm执行 k+=i;的时候,由于k

是类变量 存储在方法区,而线程是有自己的stack的 ,那这个时候k的值 是先去方法区去取的 然后保存在线程 stack 的那个地方 ? 因为一个线程stack 是又stack frame 组成的,一个stack frame 相当于一个方法的调用,stack frame 是又 localvariable ,Operand Stack 和Frame Data
组成 那个k 是放到哪里的

如果k 是一个 对象 那这个对象的应用是放在当前stack frame的哪里的

  • 写回答

2条回答 默认 最新

  • wanghaolovezlq 2010-03-23 15:53
    关注

    ConcurrentHashMap 内部也是依赖于ReentrantLock (可重入锁)的机制实现的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?