[解決済み] スレッドからの戻り値
2022-11-04 22:30:39
質問
あるメソッドに
HandlerThread
. の中で値が変更されます。
Thread
の中で値が変更され、それを
test()
メソッドに戻したいのです。このような方法はあるのでしょうか?
public void test()
{
Thread uiThread = new HandlerThread("UIHandler"){
public synchronized void run(){
int value;
value = 2; //To be returned to test()
}
};
uiThread.start();
}
どのように解決するのですか?
通常は次のようにします。
public class Foo implements Runnable {
private volatile int value;
@Override
public void run() {
value = 2;
}
public int getValue() {
return value;
}
}
次に、スレッドを作成し、値を取得します(値が設定されていることが前提です)。
Foo foo = new Foo();
Thread thread = new Thread(foo);
thread.start();
thread.join();
int value = foo.getValue();
tl;dr
スレッドは値を返すことができません(少なくともコールバックメカニズムがない限り)。通常のクラスのようにスレッドを参照し、値を要求する必要があります。
関連
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] voidメソッドが例外を投げるかどうかをMockitoがテストする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン