¿Por qué es Thread.stop() tan peligroso?
Los problemas se describen en detalle aquí: http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
¿Por qué es recomendable utilizar Thread.interrupted() en su lugar?
Debido Thread.interrupt()
deja el hilo objetivo del responden interrupción cuando se llega a un punto cuando se sabe que es segura para hacerlo.
Sé que la parada está desaprobada. ¿Qué otra cosa lo hace inseguro?
Ver el enlace de arriba.
¿Hay algún lugar donde pueda usar el método de detención? Si es así dame un ejemplo.
En teoría, si supiera que el hilo que se detiene:
- no actualizar nunca estructuras de datos compartidas con otros hilos,
- no utilizaron espera/o notificar nivel más alto clases de sincronización, o clases que dependieron de ellas,
- y posiblemente algunas otras cosas.
Por ejemplo, creo que sería seguro stop()
en este tema:
new Thread(new Runnable(){
public void run(){for (long l = 0; l > 0; l++){}}).start();
Sin embargo, en la mayoría de los casos es demasiado difícil para hacer el análisis de averiguar si llama stop()
que realmente cuidate. Por ejemplo, debe analizar cada bit de código posible (incluidas las bibliotecas centrales y de terceros) que utiliza el subproceso. Entonces eso lo hace inseguro por defecto.
¿Has leído http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html enlazado desde Thread.stop javadocs? –
+1, mi mano hizo el voto explícito mientras mi cerebro estaba contemplando ninguno :) – adarshr
Este artículo puede ser útil: [¿Qué haces con InterruptedException?] (Http://www.yegor256.com/2015/10/20/ interrupted-exception.html) – yegor256