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
  • Desactivar el tiempo de espera de la pantalla Teléfono / tablet Android
  • ¿Puedo impedir que el teléfono se quede dormido en una página web?
  • Cómo identificar el móvil está inactivo?
  • Android sleep () sin bloquear la interfaz de usuario
  • Acceso a la red cuando el teléfono Android está dormido
  • Despertar un hilo de dormir - interrupción () versus "dividir" el sueño en varios sueños
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.