게임 어플을 만들면서 thread에 애를 먹고있는데요

thread를 종료 시키기 위해선join()을 하고 종료되길 기다리면 종료된다고(이것은 짧은시간안에 이루어진다고) 책에 써있었습니다.

저는 그게 안되서 왜 안될까 고민을 했는데 이상하게도 이유는 클래스 내부 퍼블릭 메소느 안에 join을 하게 해놓았는데

이것을 외부 클래스에서 부르면 제대로 작동을 하지 않고 클래스 내부에서 부르면 제대로 작동한다는것입니다.

이것에대해 이유를 아시는분이 있으신지요?


public void requestExitAndWait()
 {
  threadState = false;
  threadExit = true;
  boolean retry = false;
  
  while( !retry )
  {
   try
   {
    this.join();//스레드 해제
    retry = true;
   }
   catch(InterruptedException e)
   {
    Log.d("thread", "thread err = " + this.isAlive());
   }
  }
  
 }


 

해당 메소드를 사용하고 있으며 thread클래스 안에서 호출하면 정상적으로 작동하고 외부에서 객체를 만들어서 호출하면 제대로 작동하지 않습니다.