SystemClock.sleep () vs. Thread.sleep () mientras espera un bucle de semáforo

Para sincronizar / cola de acceso a un recurso compartido, estoy a punto de utilizar un semáforo , ayudado por un bucle de espera.

Con el fin de no ejecutar en la vinculación de CPU, me gustaría sleep() un poco dentro de ese lazo while.

Busqué la referencia de http://developer.android.com y encontré dos tales funciones del sueño () y estoy confundido en cuanto a cuál cabe qué escenario:

  1. Thread.sleep ()
  2. SystemClock.sleep ()

¿Cuál mejor se adapta al caso que describí y por qué?

En primer lugar, ¿realmente necesita un bucle de espera? Normalmente puede solucionar sus problemas mediante notificaciones adecuadas, es decir, tener un objeto, llamando a wait () y notify () en él u otros medios (como una cola de bloqueo o Semaphore.acquire () en su caso).

Dicho esto, si realmente quieres un bucle de sondeo (que realmente no deberías hacer a menos que tengas que hacerlo), me quedaría con Thread.sleep (). No hay mucha diferencia, como dice la documentación, excepto que tiene la opción de interrumpir un Thread.sleep (). No te deshagas de la opción de hacerlo.

Tenga en cuenta que en caso de Thread.sleep (), usted va a tener que coger esa excepción – si eres extremadamente perezoso, probablemente se quedará con SystemClock.sleep ().

La verdad es:

Thread.sleep (n) podría ser interrumpido dentro de una llamada como AsyncTask utilizando asyncTask.cancel (true)

SystemClock.sleep (n) parece ignorar cualquier comando interrumpido, por lo que podría ser un riesgo de pérdida de memoria cuando se utiliza similar como aquí: https://github.com/square/leakcanary/blob/master/leakcanary-sample/ Src / main / java / com / ejemplo / leakcanary / MainActivity.java

  • Detener una aplicación de Android con Phonegap
  • Cómo evitar dormir en Android
  • Confusión sobre el ciclo de vida de la actividad de Android
  • Desactivar el tiempo de espera de la pantalla Teléfono / tablet Android
  • Función Android Sleep / Wait / Delay
  • ¿Por qué mi aplicación Android salta los marcos cuando se llama a Thread.sleep?
  • Android, obteniendo la señal de intensidad (PhoneStateListener) mientras el dispositivo está en modo de suspensión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.