java.lang.IllegalMonitorStateException: objeto no bloqueado por hilo antes de notificar ()

Java Lang Illegalmonitorstateexception

Registro de errores:

|_+_|

Llame al lugar para escribir:

|_+_|

La forma en que se escribe la clase problemática:

|_+_|

No hay problema para escribir la clase 1

|_+_|

No hay problema para escribir la clase 2

|_+_|

la razón:

Llamar a notificar en la clase interna anónima llama a la notificación de la clase interna anónima, y ​​la clase interna anónima no está sincronizada.
Después de modificar el primer método:
Extrae doLoad en toda la clase. Esta vez no se llama notificar a todos de la clase interna anónima. Es el notifyAll () de WaitTest

|_+_|

El segundo método de modificación es llamar a WaitTest.this.notifyAll ()



para resumir:

El objeto al que desea asegurarse de llamar anotificar es su objeto sincronizado.



Dije que ver el código fuente de Android SharedPreferencesImpl no tiene ningún problema con su escritura, y mi método de escritura es problemático porque extrajo el método en la clase principal y llamó a la notificación de la clase principal. El método de extracción simple está deshuesado. El método de extracción también causa problemas.