エラーは、返されないネイティブ コードにあります。私が知る限り、より高いレベルのJavaを介してそれを行う唯一の方法は、スレッドを使用することです-これはいくつかの理由stop()で非推奨です.
Threadこれを行うには、の代わりに昔ながらの を使用するように再設計する必要がありますExecutorService。サイズが 1 に固定されているため、ExecutorService多くの利点が得られないため、これを行うこともできます。stop()あなたの質問から私が見る限り、スレッドにロックを保持していない場合は、実行可能なオプションのように思えるかもしれませんstop()。
編集:
Apple の開発者ガイド(47 ページ) によるとEventTimeout、呼び出し時に を指定できますReceiveNextEvent。
ReceiveNextEvent は低レベルのイベント ループを実行し、発生したイベントをイベント キューに配置します。この関数は、指定したイベントが発生したとき、または指定したタイムアウトを超えたときに戻ります。
OSStatus ReceiveNextEvent(
UInt32 inNumTypes,
const EventTypeSpec *inList,
EventTimeout inTimeout,
Boolean inPullEvent,
EventRef *outEvent);
したがって、ネイティブコードを呼び出すときにタイムアウトを正しく設定することを理解していれば、うまくいくでしょう。