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

回答編集履歴

4

Thread ではなく、BufferedReader を使うコードを追加

2020/10/07 09:24

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -28,4 +28,32 @@
28
28
  }
29
29
  }
30
30
  ```
31
+ Enter を押せば止まります。
32
+
33
+ **追記**
34
+ BufferedReaderクラスの readyメソッドを使ってみました。
35
+ ```Java
36
+ import java.io.*; // BufferedReader, InputStreamReader
37
+
38
+ class test0101 {
39
+ public static void main(String[] args){
40
+ var cl = new sample();
41
+ cl.random();
42
+ System.out.println("終了");
43
+ }
44
+ }
45
+
46
+ class sample {
47
+ void random() {
48
+ try (var br = new BufferedReader(new InputStreamReader(System.in))) {
49
+ var r = new java.util.Random();
50
+ while (!br.ready()) {
51
+ System.out.print(r.nextInt(10));
52
+ Thread.sleep(100);
53
+ }
54
+ br.readLine(); // Enter の読み飛ばし
55
+ } catch (Exception e) { e.printStackTrace(); }
56
+ }
57
+ }
58
+ ```
31
59
  Enter を押せば止まります。

3

volatile の追加

2020/10/07 09:24

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  }
16
16
 
17
17
  class sample {
18
- boolean running = true;
18
+ volatile boolean running = true;
19
19
 
20
20
  void stop() { running = false; }
21
21
 

2

int c = を削除

2020/10/07 03:17

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  public void run() { cl.random(); }
8
8
  };
9
9
  t.start();
10
- int c = System.in.read(); // 入力待ち
10
+ System.in.read(); // 入力待ち
11
11
  cl.stop();
12
12
  t.join();
13
13
  System.out.println("終了");

1

t.join(); を追加

2020/10/06 18:24

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -9,6 +9,7 @@
9
9
  t.start();
10
10
  int c = System.in.read(); // 入力待ち
11
11
  cl.stop();
12
+ t.join();
12
13
  System.out.println("終了");
13
14
  }
14
15
  }