不同线程对堆上引用类型的操作是怎么进行的?

假设有个类A,类中的成员变量为a,且类A中存在一个方法为test主要实现对成员变量a的值进行修改的操作;假设有多个线程对类A操作(调用了test这个方法),那么在对变量的操作是过程是怎么样的?
是各自的线程将类A的实例对象复制一份到自己的栈空间然后进行对应的操作后,再刷新回堆空间吗?

阅读 1.3k
1 个回答

栈空间存地址,堆空间存对象。多线程操作,由于栈空间是线程独享的,所以地址值虽然相同,但是确有很多份,而所有地址都指向同一个实例对象,这个对象存放于堆空间。所以说变量a在多线程操作中需要保证线程安全。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题