回答編集履歴

3

s.getId() -> th[i].getId()

2022/06/21 04:58

投稿

int32_t
int32_t

スコア20923

test CHANGED
@@ -26,7 +26,7 @@
26
26
  calendar.add(Calendar.SECOND, nums[i]);
27
27
  Date d1 = calendar.getTime();
28
28
 
29
- System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
29
+ System.out.printf("%d %s %s %s %d %s %s\n", th[i].getId(), "start", sdf.format(date), "wait",
30
30
  nums[i], sdf.format(d1), "end");
31
31
  }
32
32
  ```

2

getTime() と add() を入れ替え

2022/06/21 04:11

投稿

int32_t
int32_t

スコア20923

test CHANGED
@@ -23,8 +23,8 @@
23
23
  th[i] = new Thread();
24
24
  th[i].start();
25
25
  calendar.setTime(date);
26
+ calendar.add(Calendar.SECOND, nums[i]);
26
27
  Date d1 = calendar.getTime();
27
- calendar.add(Calendar.SECOND, nums[i]);
28
28
 
29
29
  System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
30
30
  nums[i], sdf.format(d1), "end");

1

更新

2022/06/20 23:50

投稿

int32_t
int32_t

スコア20923

test CHANGED
@@ -12,4 +12,23 @@
12
12
  ただし、これが本当に質問者さんがやりたいことなのかは確信がもてません。
13
13
  質問文のコードでは乱数30個の生成とそのソートがメインスレッドで 27,000 回実行されます。(`h`のループ * `th`のループ * `i`のループ)
14
14
 
15
+ ----
15
16
 
17
+ 追記:
18
+ やりたいことはなんとなく理解できた気がします。「個々のスレッドに乱数を割り当て、そのスレッドの情報を乱数順に表示したい」ということなのでしょう。以下のような構成にするといいんじゃないでしょうか。
19
+ ```java
20
+ int[] nums = new Random().ints(30, 2, 11).toArray();
21
+ Arrays.sort(nums);
22
+ for (int i = 0; i < 30; i++) {
23
+ th[i] = new Thread();
24
+ th[i].start();
25
+ calendar.setTime(date);
26
+ Date d1 = calendar.getTime();
27
+ calendar.add(Calendar.SECOND, nums[i]);
28
+
29
+ System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
30
+ nums[i], sdf.format(d1), "end");
31
+ }
32
+ ```
33
+
34
+