Java.lang.IllegalMonitorStateException: objeto no bloqueado por el hilo antes de esperar ()
Pero estoy sincronizando en el objeto 'roster' dondequiera que sea new'ed. Cómo ?
El código ofensivo:
- Imagen de carga perezosa con barra de progreso hacer corrupción de la imagen cuando la imagen mostrada
- Raw no se puede resolver o no es un campo
- Android Spinner utilizando ArrayList <String>
- GridView carga lento para los recursos de imagen grande
- Openssl no se reconoce como un comando interno o externo
public Roster getRoster() { if (roster == null) { return null; } if (!roster.rosterInitialized) { try { synchronized (roster) { roster.reload(); long waitTime = SmackConfiguration.getPacketReplyTimeout(); long start = System.currentTimeMillis(); while (!roster.rosterInitialized) { if (waitTime <= 0) { break; } roster.wait(waitTime); long now = System.currentTimeMillis(); waitTime -= now - start; start = now; } } } catch (InterruptedException ie) { // Ignore. } } return roster; }
- Acceda a config.properties desde AndroidManifest.xml
- Android hamburguesa / flecha icono cambio dinámico color
- Java / Android - ¿Cómo imprimir una traza de pila completa?
- Java.lang.VerifyError IllformedLocaleException
- Android: Retroalimentación háptica: evento onClick () vs hapticFeedbackEnabled en la vista
- Android, Java: Solicitud HTTP POST
- ¿Cómo puedo obtener el código de respuesta de un VolleyError?
- La ubicación devuelta es nula cuando el proveedor es gps?
¿Con "obtiene new'ed" significa que crear un nuevo objeto de lista?
¿Está seguro de que está sincronizando correctamente? La sincronización ocurre en instancias , no en variables . Así que si lo haces por ejemplo
synchronized(roster) { roster = new Roster(); // do something }
Entonces sólo se sincronizó con la antigua , no con la nueva roster
.
Por lo que el código siguiente debería producir el mismo error:
Roster roster = new Roster(); Roster othervariable = roster; synchronized(othervariable) { roster = new Roster(); // create a new roster othervariable.wait(1000); // OK, since synchronized with this instance! roster.wait(1000); // NOT OK, not synchronized with *new* roster! }
La sincronización no ocurre en el nombre de la variable , sino en el contenido . Si sobrescribe el contenido, no volver a sincronizar con el nuevo valor!
- Alineación del texto en el botón
- ¿El uso del mismo ID de editor de anuncios publicitarios (ID de la unidad de anuncio) en más de una aplicación de Android?