如果我有
abstract class Parent
{
static object staticLock = new object();
public void Method1()
{
lock(staticLock)
{
Method2();
}
}
protected abstract Method2();
}
class Child1 : Parent
{
protected override Method2()
{
// Do something ...
}
}
class Child2 : Parent
{
protected override Method2()
{
// Do something else ...
}
}
将致电new Child1().Method1()
and new Child2().Method1()
使用同一个锁?
是的。派生类不会获得new来自基类的静态数据的副本。
然而,情况并非如此generic类。如果你说:
class Base<T>
{
protected static object sync = new object();
...
}
class Derived1 : Base<int> { ... }
class Derived2 : Base<int> { ... }
class Derived3 : Base<string> { ... }
class Derived4 : Base<string> { ... }
class Derived5 : Base<object> { ... }
class Derived6 : Base<object> { ... }
Derived1 和 Derived2 的实例具有相同的同步对象。 Derived3 和 Derived4 的实例具有相同的同步对象。 Derived5 和 Derived6 的实例具有相同的同步对象。但这三个同步对象都是不同的对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)