Reino: Code Quality
Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.
Code Correctness: Call to notify()
Abstract
Es ambiguo saber qué subproceso se activará cuando se llame
notify()
.Explanation
No hay forma de especificar qué subproceso se activará con llamadas para
Ejemplo 1: en el código siguiente,
En es caso, el desarrollador pretende activar el subproceso que llama
notify()
. Ejemplo 1: en el código siguiente,
notifyJob()
llama notify()
.
public synchronized notifyJob() {
flag = true;
notify();
}
...
public synchronized waitForSomething() {
while(!flag) {
try {
wait();
}
catch (InterruptedException e)
{
...
}
}
...
}
En es caso, el desarrollador pretende activar el subproceso que llama
wait()
, pero es posible que notify()
notifique un subproceso diferente al previsto.References
desc.structural.java.code_correctness_call_to_notify