この基本的な質問は少し恥ずかしいですが、ここにあります。Java:元のスレッドの文脈で、別のスレッドからコールバックを呼び出す
私は、メインクラスとワーカースレッドを持っているとしましょう。ワーカースレッドはいくつかの非同期作業を行い、その結果をメインクラスのコールバックに返します。
私が苦労しているのは、メインクラスのコールバックがワーカースレッドの一部として実行されることです。私はこれを十数回やったことがありますが、それは私には何の問題も生じませんでしたが、ワーカースレッドからの応答を実際のメインスレッドにエレガントに返す方法が不思議です。
私はFuture
とFutureTask
などを使用することができますが、それは私には気難しいと感じています。
例:
class ThreadTest {
private Runnable mRunnable;
public ThreadTest() {
System.out.println("ThreadTest(): thread " + Thread.currentThread().getId());
mRunnable = new Runnable() {
public void run() {
System.out.println("run(): thread " + Thread.currentThread().getId());
print();
}
};
new Thread(mRunnable).start();
}
private void print() {
System.out.println("print(): thread " + Thread.currentThread().getId());
}
public static void main(String... args) {
System.out.println("main(): thread " + Thread.currentThread().getId());
ThreadTest t = new ThreadTest();
}
}
出力:
main(): thread 1
ThreadTest(): thread 1
run(): thread 9
print(): thread 9
私が取得したいと思い何を:そのような問題へ
main(): thread 1
ThreadTest(): thread 1
run(): thread 9
print(): thread 1
私はちょうど1,2時間コンピュータから離れていました... – fjc
心配しないでください。 - 。) – GhostCat