所有对象共享一个方法吗?

来源:互联网 发布:真融宝 靠谱吗 知乎 编辑:程序博客网 时间:2024/05/29 04:51

 

考虑方法在内存里的分布。

首先,不管有几个某类的实例,我们假设这样的前提,这些实例都运行在同一个进程中。

那么,如果此类的几个实例同时调用同一个方法的时候会不会存在竞态的问题?

答案是否定的,方法本身的二进制码在此进程中应该是唯一的,但每个实例调用此方法时的数据在堆栈的不同地方,操作的数据是堆栈里的不同变量。

接着,我们如何制造竞态的条件呢?为此,我们需要让不同的线程共享同一个对象,冰调用此对象的同一方法,这样,在多次的测试中就会出现竞态的现象了。

 

此结论在JAVA或者C#里拥有同样的原理。