Cómo detener o interrumpir un hilo que duerme en java.? Tengo un hilo que sincroniza datos y duerme durante 10 minutos en el método run(), si quiero detener la sincronización deteniendo el hilo cuando está durmiendo. ¿Cómo se puede lograr esto?Interrumpir o detener un hilo que duerme
Respuesta
Llame al método de interrupción() en su hilo. Esto hará que se suspenda el sueño y se lanzará una InterruptedException.
¿Qué pasa si el hilo no está durmiendo, y todavía quiero hacer algo como Thread.sleep? – Jaydev
Puede interrumpir un hilo que duerme con Thread.interrupt()
. Ahora detener un hilo está en desuso, ¿y si el hilo mantiene un bloqueo en algo? (Hubo un Thread.stop()
, pero está MUY desaconsejado).
De forma alternativa, en lugar de dormir, puede hacer que el hilo espere a que se notifique un objeto con tiempo de espera, y simplifique la notificación al objeto si desea que el hilo se active.
Frederik tiene razón: llame a Thread.interrupt(); Solo quería advertirle que no use stop() ya que está en desuso desde Java 1.1. Y otra advertencia. Creo que si está usando sleep() y desea interrumpir el hilo, es un buen momento para pensar en mover a wait() y notify(). Hay muchos tutoriales sobre hilos de java y el javadoc de java.lang.Thread es lo suficientemente bueno, por lo que puede seguir leyendo allí si no está familiarizado con estas API.
Suresh, deseo prestar atención a un problema. Los métodos de interrupción() en sí no interrumpen el hilo. Simplemente envía una solicitud a un hilo por interrupción, estableciendo el indicador en verdadero. Por lo general, su hilo debe procesar la política de cancelación/interrupción. Se describe en gran medida en Java Concurrecy in Practice, sección 7.1 Cancelación de tareas.
Bloqueando métodos de biblioteca como Thread.sleep y Object.wait intentan detectar cuando un hilo ha sido interrumpido y regresan temprano. Responden a la interrupción borrando el estado interrumpido y lanzando InterruptedException.
Como no puedo hacer ningún comentario, publicaré otra respuesta. Solo quiero reforzar y aclarar lo que dijo Alexandr. interrupt()
solo establece un indicador en el Thread
, y el objeto Thread
o Runnable
extendido tiene que comprobar si se ha interrumpido con Thread.interrupted()
para hacer lo que se supone que debe hacer cuando se interrumpe.
interrupt()
también detiene un wait()
o sleep()
, pero tenga en cuenta que esos métodos DESEE el indicador de interrupción. Por lo tanto, si llama al interrupt()
en un hilo de espera/espera, dejará de dormir/esperando pero no sabrá que fue interrumpido, excepto si detecta la excepción, y no continuará siendo interrumpido.
Pude arreglar un programa mío mediante la implementación de mi propio indicador de interrupción, que no pudo ser anulado por los métodos sleep()
y wait()
. Además, sepa que puede interrumpir un hilo desde dentro con Thread.currentThread().interrupt()
.
- 1. Interrumpir un hilo que duerme
- 2. Iniciando un hilo que duerme en .NET
- 3. time.sleep - ¿Duerme el hilo o el proceso?
- 4. Cómo detener/interrumpir un boost :: thread?
- 5. ¿Hay alguna manera de despertar un hilo que duerme?
- 6. Interrumpir/matar a un hilo en ejecución
- 7. cómo interrumpir un hilo que está esperando la función recv?
- 8. Detener un hilo
- 9. Detener un hilo en Java?
- 10. NetBeans y detener/interrumpir todas las excepciones?
- 11. Interrumpir Python raw_input() en un hilo secundario con^C/KeyboardInterrupt
- 12. Boost :: asio: ¿cómo interrumpir un hilo del servidor tcp bloqueado?
- 13. ¿Hay alguna manera de detener el tiempo. ¿Duerme en Windows?
- 14. C# Duerme durante 500 milisegundos
- 15. IntelliJ - detener un hilo durante la depuración
- 16. Interrumpir/detener una transición CSS3 en la posición/estado real
- 17. Cómo interrumpir o continuar Ext.each
- 18. Detener el hilo en python3
- 19. Interrumpir un socket de conexión
- 20. Detener todas las animaciones que se realiza en diferentes hilo
- 21. Concurrencia: interrumpir un futuro sin cancelarlo
- 22. Detener un hilo después de un cierto período de tiempo
- 23. AutoResetEvent frente a boolean para detener un hilo
- 24. Cómo interrumpir correctamente un bucle infinito QThread
- 25. cómo detener el hilo ASyncTask en android
- 26. Silverlight Confirmar diálogo para detener el hilo
- 27. Cómo detener el hilo asynctask en android?
- 28. C# Threading - Cómo iniciar y detener un hilo
- 29. Cómo detener un hilo cuando se cierra mi aplicación winform
- 30. ¿Cómo detener un hilo de Java con gracia?
El duplicado exacto ya no existe :-( –
¿Debería volver a abrirse esta pregunta ya que su duplicado fue eliminado por el autor? – Craigy