前提・実現したいこと
スレッドを使用したプログラムです。1秒間でエンターキーを押した数を表示するプログラムを作成し実行したのですが、実行すると、下のようなエラー文が出てしまい、かつカウントが1回のみで強制終了してしまいます。どの部分を修正すればうまく実行できるのか、よろしければアドバイスをお願いします。
発生している問題・エラーメッセージ
Enter: Enter: Exception in thread "main" java.lang.IllegalThreadStateException at java.base/java.lang.Thread.start(Thread.java:793) at Sample.main(Sample.java:44) 1
該当のソースコード
Java言語
1 2import java.io.*; 3 4class Counter{ 5 private int count = 0; 6 public synchronized void add(){ 7 try{ 8 9 int temp = count; 10 Thread.sleep(1000); 11 count = temp + 1; 12 } 13 catch(InterruptedException e){ 14 15 } 16 } 17 18 public int getCount(){ 19 return count; 20 } 21} 22 23class Worker extends Thread{ 24 Counter counter = new Counter(); 25 26 public void run(){ 27 counter.add(); 28 System.out.println(counter.getCount()); 29 30 return; 31 } 32 33} 34 35class Sample{ 36 public static void main(String[] args) throws NumberFormatException{ 37 Worker worker = new Worker(); 38 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 39 40 while(true){ 41 System.out.print("Enter: "); 42 try{ 43 if((br.readLine()).equals("")){ 44 worker.start(); 45 } 46 } 47 catch(IOException e){ 48 System.out.println("error"); 49 } 50 } 51 52 } 53}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。