今、一秒おきにメッセージを表示するコードを考えています。その待ち時間(一秒間)の間は、オブジェクトをアクティブでない状態にして、待ち時間が終わったら、またオブジェクトをアクティブにするというループ(Producerクラスの中にはThread.sleepを使わない)を考えた場合、毎回オブジェクトがアクティブになるたびに、そのオブジェクトのフィールドがリセットされてしまうのですが(本来ならば、オブジェクトがアクティブになるたびに、numberを0から1づつ、timeも1000づつ増やしたい)、どこを修正したらいいでしょうか。staticを使うことを考えたのですが、それもリセットされてしまいます。よろしくお願いします。
java
1public class Producer { 2 private String text; 3 private int number; 4 private long time; 5 6 7 8 Producer(String text){ 9 this.text = text; 10 this.number = 0; 11 this.time = System.currentTimeMillis() % 100000; 12 } 13 14 void go() { 15 System.out.println(text + " " + number + " " + time); 16 number =+ 1; 17 18 } 19} 20 21public class Main { 22 public static void main(String[] args) { 23 Producer p = new Producer("demo"); 24 int tm = 1000; 25 26 try { 27 while(true) { 28 p.go(); 29 Thread.sleep(tm); 30 } 31 }catch(InterruptedException e) { 32 } 33 } 34} 35 36
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/07 14:43