界: Code Quality
代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。
Code Correctness: Call to notify()
Abstract
调用
notify()
时将唤醒哪个线程并不确定。Explanation
通过调用
例 1:在下列代码中,
在这种情况下,开发人员希望唤醒调用
notify()
无法指定将唤醒哪个线程。 例 1:在下列代码中,
notifyJob()
调用 notify()
。
public synchronized notifyJob() {
flag = true;
notify();
}
...
public synchronized waitForSomething() {
while(!flag) {
try {
wait();
}
catch (InterruptedException e)
{
...
}
}
...
}
在这种情况下,开发人员希望唤醒调用
wait()
的线程,但是 notify()
可能会通知另外的线程。References
desc.structural.java.code_correctness_call_to_notify