質問

だから私はそのTimerTask taskで関数を呼び出すonTimerComplete() run()を持っている。

onTimerComplete()は次のようになります

private void onTimerComplete(){
  myFunc1();
  myFunc2();
}

私はTimer tを作り、私はTimerTaskt.schedule(task, 2000);をスケジュール

問題は、タイマーが起動され、タスクが私のonTimerComplete()を実行しますが、その関数が終了していないとき、です。それはmyFunc1()を実行しませんが、決してそれを終了したり、それは今までmyFunc2()を呼び出しん。

私は直接onTimerComplete()を呼び出す場合は、

しかし、すべてが機能します。

ここでは契約は何ですか?

役に立ちましたか?

解決

myFunc1()を開始しますが、終了したことがない場合は、

、それは問題がその関数であることが最も可能性があります。

あなたはこの関数は別のスレッドで呼び出されることに注意する必要があります。二つのスレッド間の不要な相互作用のいくつかの種類がある可能性があります。 (ここを説明。)

myFunc1()も他の同時活動に使用されているいくつかの変数を使用している場合は、

、あなたはあなたのコードの一部を同期する必要があるかもしれません。 のは、あなたが何をうまく助けるかもしれない並行処理のチュートリアル問題があり、それを修正する方法。

scroll top