Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Call to notify()
Abstract
É ambíguo qual thread será ativado quando
notify()
for chamado.Explanation
Não há como especificar qual thread será ativado por chamadas para
Exemplo 1: No código a seguir,
Nesse caso, o desenvolvedor tem a intenção de ativar o thread que chama
notify()
.Exemplo 1: No código a seguir,
notifyJob()
chama notify()
.
public synchronized notifyJob() {
flag = true;
notify();
}
...
public synchronized waitForSomething() {
while(!flag) {
try {
wait();
}
catch (InterruptedException e)
{
...
}
}
...
}
Nesse caso, o desenvolvedor tem a intenção de ativar o thread que chama
wait()
, mas é possível que notify()
notifique um thread diferente do pretendido.References
desc.structural.java.code_correctness_call_to_notify