Excepción de puntero nulo durante la instrucción 'monitor-enter v1'

Consigo este error ahora cada vez
dentro de public void onResponse (llamada de llamada, respuesta de respuesta) { :

mContext.runOnUiThread(new Runnable() { @Override public void run() { LocalDBUtility local=LocalDBUtility.getInstance(); //code } 

dentro de mi clase singleton LocalDBUtility

 static LocalDBUtility localDBUtility; private LocalDBUtility(){ } public static LocalDBUtility getInstance(){ if(localDBUtility==null){ synchronized (localDBUtility) { localDBUtility = new LocalDBUtility(); } return localDBUtility; }else { return localDBUtility; } } 

Quiero saber qué causó NPE?

Rastro de la pila:

  java.lang.NullPointerException: Null pointer exception during instruction 'monitor-enter v1' at com.utilities.LocalDBUtility.getInstance(LocalDBUtility.java:34) at com.MainActivity$4.run(MainActivity.java:386) at android.app.Activity.runOnUiThread(Activity.java:5506) at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5763) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755 

2 Solutions collect form web for “Excepción de puntero nulo durante la instrucción 'monitor-enter v1'”

  if(localDBUtility==null){ synchronized (localDBUtility) { 

Si localDBUtility es nulo, no se puede llamar a sincronizar. Sólo se puede sincronizar en un objeto instanciado.

En Java cada instancia de un tipo de referencia tiene su propio monitor asociado con él. El bloque sincronizado utiliza este monitor, bloqueándolo cuando un hilo entra y lo desbloquea cuando este mismo hilo lo deja. Si pasa una referencia nula al bloque sincronizado, la operación que intenta obtener el monitor asociado se llamará en una referencia nula que da como resultado una excepción NullPointerException. Por lo tanto, no se puede sincronizar en las referencias nulas.

Ya puede ver que el código que está ejecutando está intentando utilizar una referencia nula ("localDBUtility == null") para el bloque sincronizado que obviamente resulta en un NPE.

Nota: Un monitor es un constructo de sincronización que se utiliza para implementar la exclusión mutua.

  • ¿Cuándo / por qué se destruye mi instancia de singleton de Java?
  • ¿Puedo obtener cierta eficiencia al declarar a los miembros apropiados "estáticos" en la actividad de Android?
  • Cómo pasar el contexto de la aplicación dentro Singleton y SharedPreferences Clases
  • Android: Mejor manera de guardar los datos almacenados en la clase Application Singleton
  • Android Singleton con un contexto global
  • Singletons vs. Contexto de la aplicación en Android?
  • Ciclo de vida de singleton basado en enum en Android
  • Las referencias estáticas se borran - Android descarga clases en tiempo de ejecución si no se utiliza?
  • Servicio de Android Creación de una nueva instancia de clase Singleton
  • Obtenga el contexto de aplicación de la clase singleton de no actividad
  • OnSaveInstanceState con Singleton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.