3

AndroidでJavaマルチスレッドアプリケーションに取り組んでいます。

スレッド 1: リスナー スレッド。ソケットでリッスンし続け、何らかのアクションのために 2 番目のスレッドを起動します

スレッド 2: アクション スレッド。短命。最初のスレッドから解雇され、単純なアクションを実行して死亡します。

スレッド 1 は、スレッド 2 を起動した後にリッスンに戻るため、スレッド 2 を待機しません。

終了する直前に Thread2 から Thread1 のメソッド (たとえば、thread2ActionCompleted()) を実行できますか。

何らかの理由で、スレッド 1 で静的メソッドまたは静的変数を使用できません

を使用して同様のスレッドをいくつか見ましExecutorServiceたが、私の状況でうまくいくかどうかの良い例を見つけることができませんでした。

4

4 に答える 4

1

更新情報: 親スレッドのインスタンスをパラメーターとして子スレッドのコンストラクターに渡すことになりました。一度に 1 回だけアクセスしたいコードと魅力のように機能し、同期ブロックに入れました。

Parent Thread: Thread1
Child Thread: Thread2

class Thread1 extends Thread implements Runnable {
  ...
  Thread2 t2 = new Thread2(this);
  new Thread(t2, "ChildThread").start();
  ...
}

class Thread2 extends Thread implements Runnable {
 ...
 Thread1 t1;
 Thread2 (Thread1 t) {
   t1 = t;
 }
 ...
 t1.CallAnyMethod();
 ...
}
于 2013-11-19T22:51:01.087 に答える