线程的栈本地变量私有拷贝

私有拷贝

如果两个线程 同时调用了 同一个对象objec3的方法的成员变量时 实际上 这两个线程栈是同时拥有了这两个obeject3成员变量的

私有拷贝线程的栈本地变量私有拷贝_第1张图片

 每个线程都有一个本地内存(用于存放共享变量的副本)

线程的栈本地变量私有拷贝_第2张图片

两个线程间的通信
线程A必须将本地的私有变量的更新 刷新的主内存当中
线程B到主内存中去读取线程A中已更新过的共享变量
这就会造成 count++ 在多个线程访问时不准确 你从主内存拿的值不是最新的
两个线程间的数据 是不可见的 因此计数就出现了错误

线程间的同步

Lock unlock 一个变量用于一个线程独占 然后释放
Read 读取 把一个变量从主内存当中传输到工作内存中,以便随后的load使用
Load ,把主内存变量 放入工作内存的变量副本当中
Use 使用
Assign
Store 存储 把工作内存中的变量传送到主内存中
Write 写到主内存
线程的栈本地变量私有拷贝_第3张图片

 

 

 

 

 

 

你可能感兴趣的:(线程的栈本地变量私有拷贝)