많은 예제에서는 SurfaceView의 스레드 안에서 그냥 연산작업을 처리하는데요..
전 가끔 ANR이 나서 알아보니까... 복잡한 연산은 다른 스레드로 빼라는 말씀들이 많으시더라고요.

제 스레드는 아래와 같이 생겼습니다.
class RunThread extends Thread
 {
  public void run()
  {
   canvas = null;
            while (threadRunning)
            {
             canvas = holder.lockCanvas();
             try
             {
              synchronized (holder)
                    {
               cAction.setStage();
               cAction.drawBackground();
               cAction.drawCells();               
               cAction.drawTower();
               cAction.drawMonster();
               cAction.drawMissile();
               cAction.drawExplosion();
               cAction.drawReward();
               cAction.drawTempTower();               
               cAction.drawSubMenu();
               cAction.drawBuildMenu();
               cAction.drawItemMenu();
               cAction.drawTexts();
               cAction.drawMessage();
               cAction.checkGameStatus();
               
               try
               {
                Thread.sleep(10);
               } catch (Exception e) {}
                    }
             }
             finally
             {
              if (canvas != null)
                  {
                   holder.unlockCanvasAndPost(canvas);
                  }
             }
             synchronized (this)
             {
              if (threadWait)
                    {
               try
                     {
                      wait();
                     } catch (Exception e) {}
                    }
             }
            }
  }

여기서 만약에 다른 작업스레드로 분리를 한다면... 어떤방식으로 되는것인가요?
작업스레드에서 계산을하고 위 메인 스레드는 스레드대로 돌아가게 해보았더니, 작업 스레드는 처리속도가 엄청 빨라서 속도가 맞지 않더라고요.

스레드를 분리하는것에 대해서 조언을 얻을수 있을까요?