线程的内存模型的疑问

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的哪里的

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

应该是做为线程栈的本地变量存储,