javaでスレッドを作って処理をさせたいと思います。
メインのクラスでスレッドAを呼び出し、スレッドAで計算をしてその結果をメインのクラスで利用したい場合、一番簡単な方法は何でしょうか?
なお、メインのクラスは、
while (Thread.isAlive());
な感じでスレッドが終わるまで処理を止めておきたいと思います。
簡単なコードを書いていただけないでしょうか?
スレッドのインスタンスに計算結果を抱えておいて、ゲッターメソッドで取得するのが簡単だと思います。
public class Hatena { static class MyThread extends Thread { private String answer_; public String getAnswer() { return answer_; } public void run() { /* 時間がかかる計算 */ try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println(e); } answer_ = "hatena"; } } public static void main(String[] args) { try { MyThread th = new MyThread(); /* 計算開始 */ th.start(); /* 計算終了を待ち合わせ */ th.join(); /* 計算結果を取得 */ System.out.println("answer = " + th.getAnswer()); } catch (InterruptedException e) { System.out.println(e); } } }
後、スレッドの処理を待ち合わせるのに、こんなことをしては駄目です。
while (Thread.isAlive());
こっちのループで CPU を食ってしまう。
Thread#join() で待ち合わせてください。