|
|
1
4
如果B有自己的锁对象,那么很容易得到:
说了这么多,我很想 最 非线程安全或不可变的类(只有关于线程的类需要线程知识)和 最 |
|
|
2
4
这要看情况了。如果您的子类只使用基类中的安全方法,并且没有添加任何额外的不安全状态,那么您就不必做任何事情(首选)。如果它添加了一些与基类的状态不相关的额外状态,那么您可以在子类中创建一个单独的锁对象并使用它。另一方面,如果您需要确保新状态和基类中的状态以某种“事务性”方式更改,那么我将保护基类中的lock对象并使用它。 |
|
|
3
4
只是使用
你所做的一切
可以归结为两个不相关的问题:
如果1)为true,2)为true,并且它们应该使用相同的锁定对象,则需要通过
如果两者都不是真的,那就别担心了。如果2)为true,但它们不需要使用相同的锁定对象(换句话说,可以接受对
|
|
|
4
2
因此,当您像这样锁定整个对象时,必须小心锁内运行的代码:“坏”代码在锁内运行会影响代码的正确性。 由于子类化引入了原始对象无法控制的代码,因此使用这样的自锁类通常被视为一种危险的方法,因此一种流行的约定是“不要这样做” 如果考虑到可能出现的问题,您仍然希望采用这种方法,那么使可锁定对象受保护而不是私有将允许您在同一基类锁中包含子类操作。 |
|
|
5
-3
|
|
Fernando Chu · 一个变量有多个可能的类?[关闭] 1 年前 |
|
|
Amaterastis · 基类接受子类和内部子类的模板参数 1 年前 |
|
|
Rishab Negi · 这个关键字在抽象类中是如何工作的 1 年前 |
|
|
dEmigOd · 类层次结构中的运算符重载解析 1 年前 |
|
|
TableTopRug · 如何从Kotlin中的密封类继承? 1 年前 |
|
|
hasdrubal · 抽象基类函数指针python 1 年前 |
|
|
Josh · 通过反思访问孩子的财产 2 年前 |