假设有个类A,类中的成员变量为a,且类A中存在一个方法为test主要实现对成员变量a的值进行修改的操作;假设有多个线程对类A操作(调用了test这个方法),那么在对变量的操作是过程是怎么样的?
是各自的线程将类A的实例对象复制一份到自己的栈空间然后进行对应的操作后,再刷新回堆空间吗?
假设有个类A,类中的成员变量为a,且类A中存在一个方法为test主要实现对成员变量a的值进行修改的操作;假设有多个线程对类A操作(调用了test这个方法),那么在对变量的操作是过程是怎么样的?
是各自的线程将类A的实例对象复制一份到自己的栈空间然后进行对应的操作后,再刷新回堆空间吗?
15 回答8.4k 阅读
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
3 回答3.6k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
栈空间存地址,堆空间存对象。多线程操作,由于栈空间是线程独享的,所以地址值虽然相同,但是确有很多份,而所有地址都指向同一个实例对象,这个对象存放于堆空间。所以说变量a在多线程操作中需要保证线程安全。