2011-03-07 18 views
5

¿Por qué es tan peligroso Thread.stop()?¿Por qué Thread.stop() es tan peligroso

¿Por qué es aconsejable usar Thread.interrupted() en su lugar?

stop está en desuso. ¿Qué otra cosa lo hace inseguro?

¿Hay algún lugar donde pueda usar el método stop? Si es así dame un ejemplo.

+10

¿Has leído http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html enlazado desde Thread.stop javadocs? –

+0

+1, mi mano hizo el voto explícito mientras mi cerebro estaba contemplando ninguno :) – adarshr

+0

Este artículo puede ser útil: [¿Qué haces con InterruptedException?] (Http://www.yegor256.com/2015/10/20/ interrupted-exception.html) – yegor256

Respuesta

8

¿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.

+4

+1: El problema con el uso de stop() es que solo funciona de manera segura con hilos sencillos, bien entendidos y bien procesados, sin embargo, si se comporta bien, no debería necesitar el uso de stop(). –

Cuestiones relacionadas