マルチスレッドで動くプログラムで下記のようなサンプルを作成したのですが疑問に思うような 挙動をしたので質問させてください。 以下プログラムでは配列に指定したURLのページのソースを取得するプログラムでそれ自体は 動作しました。しかし、コンソール上に最初に「★★終了★★"」という文字列が表示されてから それに続いて目的のソースが表示されるという動作をしました。 私の認識ではex.start()によりExThread内で定義されたrun()の処理がマルチスレッドで実行されて から「★★終了★★"」という文字列が表示されるものと思っていました。 ex.start()が実行されることによりmain()メソッド内の処理が全て非同期の処理になってしまうという ことでしょうか。 また、私が当初想定していたようにExThread内で定義されたrun()の処理がマルチスレッドで 全て実行された後、「★★終了★★"」という文字列が表示されるようにするにはどのように すればよろしいでしょうか。 【サンプル】 public class test { public static void main(String[] args) { String[] listUrls = {"http://www.yahoo.co.jp", "http://www.google.co.jp", "http://httpd.apache.org"}; for(String strUrl : listUrls) { ExThread ex = new ExThread(strUrl); ex.start(); } System.out.println("★★終了★★"); } }
↧