メインスレッドのコンテキスト内でコールバックが呼び出されるようにするにはどうすればよいですか?
私はActiveMQを使用しており、具体的には、activemqコンシューマーを作成したスレッドのコンテキスト内でコールバックが確実に実行されるようにする方法を理解しようとしています。
リスナー/ハンドラーで取得するスレッドIDは、コンシューマーを作成してリスナーを設定したものとは異なるため、ハンドラー/リスナーのコードが最初のスレッドスレッドで実行されるようにする方法を理解しようとしています。
リスナーでコードを実行するスレッドを作成した場合は、ExecutorとFutureを使用した可能性がありますが、activemqによって作成されたため、リスナーを次のコンテキスト内で実行する方法を理解したいと考えていました。 'メイン'スレッド。
次に、一般的なJavaスレッドコールバックについて読み始めました。ほとんどの記事では、runnableを実装するスレッドに渡すクラスでメソッドを呼び出す方法について説明しています。そのコールバック内のコードは、私が生成したスレッドのコンテキスト内にあるように見えます。
..では、メインスレッドのコンテキスト内でコールバックが呼び出されるようにするにはどうすればよいですか?
.netではSynchronizationContextを使用でき、WPFではこのコンテキストを内部で使用するDispatcherを使用できます。
私は同期されたメソッドを見てきましたが、それらのメソッドは別のスレッド、つまり「メイン」スレッドで定義されたデータ変数にアクセスしているようです。私の場合、変数/データはコンシューマースレッドで作成され、それらを返す必要があります/それらが「メイン」スレッドで使用可能であることを確認します。