2011-03-04 14 views
9

Tengo Naked notificar advertencia de FindBugs. El siguiente es mi código.Cómo corregir la advertencia de notificación descubierta de FindBugs?

synchronized (this) { 
     this.notify(); 
    } 

El "this" es "public class Controller extends Thread". ¿Cómo solucionar la advertencia? No tengo idea para eso.

Gracias de antemano.

+0

¿No le dice cuál es en realidad la advertencia? (¿Y ha considerado implementar Runnable en lugar de extender Thread?) –

+0

Simplemente no use el hilo para sincronizar. en. más sobre el uso de hilos para sincronizar en: http://stackoverflow.com/questions/5121173/java-threads-wait-and-notify-methods/5121267#5121267 – bestsss

Respuesta

9

La advertencia de notificación simple significa que usar el método notify() implica que hay algún otro subproceso que espera que cambie algún estado mutable, y está esperando ser notificado. Pero su bloque sincronizado no modificó ningún estado mutable, por lo que parece extraño que necesite la notificación. Si modificó el estado de un objeto fuera del bloque sincronizado, parece dudoso que este código sea seguro para subprocesos, ya que hay otro hilo que está leyendo estos datos

Cuestiones relacionadas