2011-01-08 12 views
0

私は3つの異なるスレッドを通してメソッドへの呼び出しを繰り返そうとしています。次のようにしかし ...私は私のループの次の反復の間に、私のスレッドを開始した後、彼らはすべてのように何も実行されません終了されるコードは次のとおりです。スレッドが終了するのはなぜですか?

public static void main(String[] args) { 
    main = new Main(); 
    pollingThread.start(); 
} 
static Thread pollingThread = new Thread() { 
    @Override 
    public void run() { 
     while (isRunning) { 
      main.poll(); 
       // test the state of the threads 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
}; 

public void poll() { 
    if (clientThread == null) { 
     clientThread = new Thread(new Runnable() { 

      @Override 
      public void run() { 
       //create some objects 
      } 
     }); 
     clientThread.start(); 
    }  
    else if (clientThread.isAlive()) { 
     // do some treatment 
    } 

    if (gestionnaireThread == null) { 
     gestionnaireThread = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       //create some objects 
      }; 
     }); 
     gestionnaireThread.start(); 
    } 

    else if (gestionnaireThread.isAlive()) { 
     // do some treatment 
    } 

    if (marchandThread == null) { 
     marchandThread = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       // create some objects 
      }; 
     }); 
     marchandThread.start(); 
    } 

    else if (marchandThread.isAlive()) { 
     // do some treatment 
    } 
} 

そして、私は状態をテストするいくつかの理由のために私のさまざまなスレッドのうち、実行可能なものとして表示され、2回目の繰り返し、彼らはすべて終了しています... 私は間違っていますか? 私は実際にエラーはありませんが、スレッドは終了していますので、ループがループし続け、スレッドが終了していることを伝えてくれます。

答えて

2

コメントは正しいですが、run()メソッドの内容はわかりませんが、 、何かを作成して戻るだけの場合、スレッドはおそらく素早く終了します。つまり、run()から戻るとスレッドが終了します。スレッドが長い時間生きているようにするには、通常、ある種のwhileループで終了条件をテストします。

+0

実際、これは多くの役に立ちます。今私は他の問題がありますが、もはやスレッドではありません。迅速な答えをありがとう。 – Sephy

関連する問題