Subproceso unirse sobre sí mismo

Estoy en duda, ¿qué pasa cuando un hilo se une a sí mismo? es decir, el hilo llama al método de unión por sí mismo. No estoy recibiendo ningún error.

Muestra:

public class JoinItself extends Thread { public void run() { System.out.println("Inside the run method "); System.out.println(Thread.currentThread().isAlive()); for(int i=0;i<5;i++) { try { System.out.println("Joining itself ..."); Thread.currentThread().join(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { JoinItself j = new JoinItself(); System.out.println(j.isAlive()); j.start(); System.out.println(j.isAlive()); System.out.println("Thread started ..."); } } 

¿Pero por qué? ¿Debo obtener algún error?

El concepto de un hilo que se une a sí mismo no tiene sentido.

Sucede que el método join() usa el método isAlive() para determinar cuándo volver del método join() . En la implementación actual, tampoco verifica si el hilo se está uniendo.
En otras palabras, el método join() devuelve cuándo y solo cuando el hilo ya no está activo. Esto tendrá el efecto de esperar por siempre.

¿Debo obtener algún error?

No esperaría un error. Los javadocs de Thread.join() no dicen que esto es un error, y es concebible que un loco pueda usar esto como otra forma de sleep , por lo que un error no documentado sería una mala idea.

Supongo que Sun no pensó que este era un caso al que merecía especial atención.