根据 cppreference,std::atomic<T>::notify_one()
将通知至少一个正在等待所述原子的线程。这意味着根据标准,它可以解锁多个线程。这与 相反std::condition_variable::notify_one()
,后者指定它将解除阻塞(不超过)一个线程。
这种差异从何而来?这不使用相同的底层机制吗?就标准库的实现而言,所有流行的库是否都有机会通过此调用实际解锁多个,或者是否有一些库总是恰好解锁一个?
可以说我有以下结构:
abstract class A {
abstract boolean foo();
}
interface B {
default boolean foo() { return doBlah(); }
}
class C extends A implements B {
//function foo
}
Run Code Online (Sandbox Code Playgroud)
Java现在会抱怨该类C
必须实现抽象方法foo A
.通过重新定义函数C
并简单地调用,我可以相对容易地解决这个问题B.super.foo();
.
但是我不明白为什么接口的默认函数B
不能单独满足这个要求,我希望能更好地理解java的底层机制.