キーイベントでちょっとお聞きしたいのですが、
現在

/** キー押下イベントが発生した時に呼ばれるメソッド */
protected synchronized void keyPressed(int keyCode) {
if(gameState != GAME_PLAYING ||
(gameState == GAME_PLAYING && isPaused)) {
//ゲーム中ではない、又はゲーム中で一時停止中の場合はreturn
return;}
int gameCode = getGameAction(keyCode);
switch(gameCode) {
case LEFT://左キー押下時
for(int i = 0;i < 8;i++){
doLeft();
try{
Thread.sleep(50);
}catch(InterruptedException e){}
}
       以下上下右が入ります。
              }
}
/** キー押下状態の時に繰り返し呼ばれるメソッド */
protected void keyRepeated(int keyCode) {
keyPressed(keyCode);
}
という様に拾っているのですが(do〜は移動描画をしています)押しっぱなし状態だと
一歩動いてその後押してた方向に動きっぱなしになってしまいます。
スレッドの扱い方が悪いのでしょうか?

ご教授おねがいしまつ。