質問内容
プログラムのmain メソッドを変更して、main スレッドの出力は他スレッドの
出力がすべて終了してから行われるようにしたいのですが,以下に乗せる自分がやったやりかたではmainがどうしても先に来てしまうのですが,なぜなのかを教えていただきたいです.
コード1
Java
1class CountTenD implements Runnable{ 2 int id=0; 3 CountTenD(int n){ 4 id=n; 5 } 6 public static void main(String[] args){ 7 if(args.length!=1){ 8 System.out.println("error on implementing. Input integer(>0)"); 9 return; 10 } 11 12 int n=Integer.parseInt(args[0]); 13 for(int i=0;i<n;i++){ 14 (new Thread(new CountTenD(i))).start(); 15 try{ 16 (new Thread(new CountTenD(i))).join(); 17 }catch(InterruptedException e){ 18 System.out.println(e); 19 } 20 } 21 for(int i=0;i<10;i++) System.out.println("main:i="+i); 22 } 23 24 public void run(){ 25 for(int i=0;i<10;i++) System.out.println("Thread("+id+"):i="+i); 26 } 27 28}
コード2
Java
1class CountTenD implements Runnable{ 2 int id=0; 3 CountTenD(int n){ 4 id=n; 5 } 6 public static void main(String[] args){ 7 if(args.length!=1){ 8 System.out.println("error on implementing. Input integer(>0)"); 9 return; 10 } 11 12 int n=Integer.parseInt(args[0]); 13 for(int i=0;i<n;i++){ 14 (new Thread(new CountTenD(i))).start(); 15 } 16 for(int i=0;i<n;i++){ 17 try{ 18 (new Thread(new CountTenD(i))).join(); 19 }catch(InterruptedException e){ 20 System.out.println(e); 21 } 22 } 23 for(int i=0;i<10;i++) System.out.println("main:i="+i); 24 } 25 26 public void run(){ 27 for(int i=0;i<10;i++) System.out.println("Thread("+id+"):i="+i); 28 } 29 30}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 00:00