teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

asdasd

2020/08/19 15:04

投稿

Toshimichi
Toshimichi

スコア97

answer CHANGED
@@ -85,6 +85,4 @@
85
85
  }
86
86
  }
87
87
 
88
- ```
88
+ ```
89
-
90
- 上2つの例が要件を満たさなかった場合にのみお聞きしますが、課題に「Thread#sleep」を使用してはいけないと書かれていたのでしょうか。

4

asdasd

2020/08/19 15:04

投稿

Toshimichi
Toshimichi

スコア97

answer CHANGED
@@ -77,13 +77,14 @@
77
77
  long endTime = System.currentTimeMillis() + 30000;
78
78
  long shownTime = 0;
79
79
 
80
- do {
80
+ while (endTime > shownTime) {
81
- if(System.currentTimeMillis() < shownTime + 1000) continue;
81
+ if (System.currentTimeMillis() < shownTime + 1000) continue;
82
82
  shownTime = System.currentTimeMillis();
83
83
  System.out.println(formatter.format(new Date(shownTime)));
84
- } while (endTime > shownTime);
84
+ }
85
85
  }
86
86
  }
87
+
87
88
  ```
88
89
 
89
90
  上2つの例が要件を満たさなかった場合にのみお聞きしますが、課題に「Thread#sleep」を使用してはいけないと書かれていたのでしょうか。

3

コードの修正

2020/08/19 14:06

投稿

Toshimichi
Toshimichi

スコア97

answer CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
76
76
 
77
- long endTime = System.currentTimeMillis() + 300000;
77
+ long endTime = System.currentTimeMillis() + 30000;
78
78
  long shownTime = 0;
79
79
 
80
80
  do {

2

追加

2020/08/19 14:03

投稿

Toshimichi
Toshimichi

スコア97

answer CHANGED
@@ -1,4 +1,4 @@
1
- 勘違いだったら申し訳ないのですが、秒毎に日時を表示させながら、他の処理を同時に行いたいということでしょうか。それならばjava.lang.Threadクラスを利用することで実現することができます。以下に例を示します。
1
+ 勘違いだったら申し訳ないのですが、1秒毎に日時を表示させながら、他の処理を同時に行いたいということでしょうか。それならばjava.lang.Threadクラスを利用することで実現することができます。以下に例を示します。
2
2
 
3
3
  ```java
4
4
  import java.text.SimpleDateFormat;
@@ -62,5 +62,28 @@
62
62
  2020/08/19 22:37:01
63
63
  2020/08/19 22:37:02
64
64
  ```
65
+ また、本当はこのようなコードはCPUを消費するためよくないのですが、sleepを使わない例もお見せします。
65
66
 
67
+ ```java
68
+ import java.text.SimpleDateFormat;
69
+ import java.util.Date;
70
+
71
+ public class Main {
72
+
73
+ public static void main(String[] args) {
74
+
75
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
76
+
77
+ long endTime = System.currentTimeMillis() + 300000;
78
+ long shownTime = 0;
79
+
80
+ do {
81
+ if(System.currentTimeMillis() < shownTime + 1000) continue;
82
+ shownTime = System.currentTimeMillis();
83
+ System.out.println(formatter.format(new Date(shownTime)));
84
+ } while (endTime > shownTime);
85
+ }
86
+ }
87
+ ```
88
+
66
- の例が要件を満たさなかった場合にのみお聞きしますが、課題に「Thread#sleep」を使用してはいけないと書かれていたのでしょうか。
89
+ 上2つの例が要件を満たさなかった場合にのみお聞きしますが、課題に「Thread#sleep」を使用してはいけないと書かれていたのでしょうか。

1

gay

2020/08/19 13:58

投稿

Toshimichi
Toshimichi

スコア97

answer CHANGED
@@ -61,4 +61,6 @@
61
61
  2020/08/19 22:37:00
62
62
  2020/08/19 22:37:01
63
63
  2020/08/19 22:37:02
64
- ```
64
+ ```
65
+
66
+ この例が要件を満たさなかった場合にのみお聞きしますが、課題に「Thread#sleep」を使用してはいけないと書かれていたのでしょうか。