1

以下のコード/スレッドがBlackberryで実行を完了したことを検出するにはどうすればよいですか:

UiApplication.getUiApplication().invokeAndWait(new Runnable() {
        public void run() {              
            EventInjector.KeyEvent inject = new EventInjector.KeyEvent  
                    (EventInjector.KeyEvent.KEY_DOWN,Characters.ENTER, 0);
                      inject.post();
                      inject.post();
        }
    }); 

別のスレッドを開始できるように、このスレッドが実行されたときに通知を受け取ることはできますか? 前もって感謝します。

4

2 に答える 2

0

通常、join() メソッドは、スレッドがいつ終了したかを判断するために使用されます。通常、join() を呼び出すとブロックされるため、注意して使用してください。

こちらが参考になります。

于 2012-10-16T10:16:13.037 に答える
0

同期ブロックが必要ですこれがどのように機能するかを簡単に説明します。

「スリープ中」のスレッドは、オブジェクトをロックし、その上で wait() を呼び出す必要があります。もう一方のスレッドは同じオブジェクトをロックし、notify() または notifyAll() を送信して最初のオブジェクトを起動します。

スレッドを明示的に開始する場合 (この場合ではありません)、単純にそのスレッドで join() を呼び出し、終了するまで同期的に待機することができます。

- 編集: スレッドで join() を使用する

実行可能なオブジェクトが既にあると仮定します。

Thread myThread = new Thread(myRunnable);
myThread.start();
doOtherStuff();
myThread.join();

しかし、何か問題が発生した場合、BlackBerry にはこの呼び出しのタイムアウトがないため、join() 呼び出しでスタックします。

于 2012-10-16T08:57:43.910 に答える