Como se está ejecutando actualmente hilo, mientras que encuentra la llamada [sleep][1]();
luego pase mueve inmediatamente en estado durmiendo en tanto que para [yield][2]();
hilo se mueve en estado estado ejecutable/listo¿Cuál es la diferencia entre el método de suspensión y el método de producción de multi threading?
¿Cuál es la diferencia entre el método de suspensión y el método de producción de multi threading?
Respuesta
sleep()
hace que el hilo deje de ejecutarse definitivamente durante un período de tiempo dado; si no se necesita ejecutar otro hilo o proceso, la CPU estará inactiva (y probablemente ingrese en un modo de ahorro de energía).
yield()
básicamente significa que el hilo no está haciendo nada particularmente importante y si es necesario ejecutar otros hilos o procesos, deberían hacerlo. De lo contrario, el hilo actual continuará ejecutándose.
Podemos prevenir un hilo de ejecución mediante el uso de cualquiera de los 3 métodos de la clase Thread:
yield()
join()
sleep()
yield()
método se detiene el hilo que se está ejecutando temporalmente para dar una oportunidad a los hilos esperando restantes de la misma prioridad a ejecutar. Si no hay un hilo en espera o si todos los hilos en espera tienen una prioridad inferior, el mismo hilo continuará su ejecución. El programador de subprocesos cuyo comportamiento depende del proveedor decide el hilo producido cuando tendrá la posibilidad de ejecución.join()
Si cualquier subproceso en ejecución t1 llamajoin()
en t2 es decir;t2.join()
inmediatamente t1 entrará en estado de espera hasta que t2 complete su ejecución.sleep()
De acuerdo con nuestro requisito, podemos hacer que un hilo esté en estado dormido durante un período de tiempo específico (espero que no se requiera mucha explicación para nuestro método favorito).
sueño causa hilo a suspender en sí para x milisegundos mientras que el rendimiento suspende el hilo e inmediatamente lo mueve a la cola de preparados (la cola de la cual la CPU utiliza para ejecutar subprocesos).
sleep() hace que el hilo deje de ejecutarse definitivamente durante un tiempo determinado; si no se necesita ejecutar otro hilo o proceso, la CPU estará inactiva (y probablemente ingrese en un modo de ahorro de energía). yield() básicamente significa que el subproceso no está haciendo algo particularmente importante y si se deben ejecutar otros subprocesos o procesos, deberían hacerlo. De lo contrario, el hilo actual continuará ejecutándose.
Consulte http://preciselyconcise.com/java/concurrency/b_sleep.php
Rendimiento: hará hilo que esperar a que el hilo se está ejecutando actualmente y el hilo que ha llamado yield() se adhiere al final de la ejecución del hilo. El hilo que llama yield() estará en estado bloqueado hasta su turno.
sueño: hará que el hilo a dormir en modo de reposo durante espacio de tiempo mencionado en argumentos.
Ingreso: t1 y t2 son dos hilos, t2.join() se llama entonces T1 entre en estado de espera hasta que se completa la ejecución t2. Entonces t1 pasará al estado ejecutable, luego nuestro programador especializado de hilos JVM elegirá t1 en función de los criterios.
Rendimiento: Es una pista (no guarenteed) al programador que ha hecho lo suficiente y que algún otro flujo de misma prioridad podría ejecutar y utilizar la CPU.
Thread.sleep();
sueño: Bloquea la ejecución de ese hilo en particular por un tiempo determinado.
TimeUnit.MILLISECONDS.sleep (1000);
- 1. ¿cuál es la diferencia entre el modo de suspensión y el modo de suspensión profunda?
- 2. ¿cuál es la diferencia entre el método de cadena y el método str en Python?
- 3. ¿cuál es la diferencia entre el éxito y el método .done() de $ .ajax
- 4. ¿Cuál es la diferencia entre el significante genérico "y el símbolo^en F # Método de firmas
- 5. ¿Cuál es la diferencia entre un algoritmo y un método
- 6. ¿Cuál es la diferencia entre un método y un selector?
- 7. ¿Cuál es la diferencia entre un método y una función?
- 8. en rieles ¿cuál es la diferencia entre el modo de desarrollo y el modo de producción?
- 9. ¿Cuál es la diferencia entre soluciones multi-tenancy y multiusuario?
- 10. En Actionscript 3, ¿cuál es la diferencia entre el operador "in" y el método "hasOwnProperty"?
- 11. diferencia entre el método y la función de Scala
- 12. Diferencia entre la propiedad y método
- 13. Diferencia entre "__method__" y "método"
- 14. C#: ¿cuál es la diferencia entre algunEvento + = Método y algunEvento + = new Delegado (Método)
- 15. ¿Cuál es la diferencia entre el método NavigationService.Navigate() y la propiedad PhoneApplicationFrame.Source?
- 16. Diferencia entre el método Get y el método de publicación en comparación con HTTP y REST
- 17. Diferencia entre el método OnLoad y el evento Load?
- 18. TransactionScope y multi-threading
- 19. ¿Cuál es la diferencia entre redefinir un método y anular un método?
- 20. Singleton y multi-threading
- 21. ¿Cuál es la diferencia entre enviar y ejecutar el método con ThreadPoolExecutor
- 22. ¿Cuál es la diferencia entre el método build y create en las relaciones ActiveRecord?
- 23. ¿Cuál es la diferencia entre el método sincronizado (este) y sincronizada
- 24. ¿Cuál es la diferencia entre un delegado asincrónico y el método asincrónico?
- 25. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 26. ¿Cuál es la diferencia entre el método OnStop() y el evento Stopping en el rol de Windows Azure?
- 27. ¿Cuál es la diferencia entre la sobrecarga de método y la anulación?
- 28. ¿Cuál es la diferencia entre una instancia de delegado y un puntero de método?
- 29. ¿Cuál es el método predeterminado de HTTP?
- 30. Acerca de multi threading
¿Qué dice su javadoc? –
Regla de oro: 1) nunca use 'yield()'; 2) use 'sleep()' solo cuando el programa sea * explícitamente * requerido para esperar la cantidad de tiempo especificada (si solo necesita "esperar un poco", la mayoría de las veces es que lo está haciendo mal y necesita implementar un mecanismo de espera/señalización adecuado). –