2016-05-01 50 views
2

は、私は、次の割り当てに取り組んでいます:印刷時限スレッド

は、その値が負でない整数である共有カウンタ、 最初にゼロを考えてみましょう。時間印刷スレッドは、カウンタを1つインクリメントして( )、実行の開始から1秒ごとにその値を出力します。メッセージの印刷スレッドは、15秒ごとにメッセージを出力します。 メッセージ印刷スレッドには、毎秒 というように、時間印刷スレッドによって通知されます。 に7秒ごとに異なるメッセージを出力する別のメッセージ印刷スレッドを追加します。そのような追加は、時間印刷スレッドの実装を変更することなく を実行する必要があります。

関連するすべてのスレッドは、毎秒 で更新されるカウンタオブジェクトを共有しています。時間印刷スレッドは カウンタを更新するたびにカウンタオブジェクトを読み取るように他のスレッドに通知し、カウンタを の値を読み取り、割り当てられた時間が経過したかどうかを確認します。その場合は、 メッセージを出力します。

import java.lang.Class; 
import java.lang.Object; 

public class Main2 { 

    public static void main(String... args) 
    { 
     Thread thread = new Thread() 
     { 
      public void run() 
      { 
       int x = 0; 
       while(true) 
       { 
        x = x + 1; 
        System.out.print(x + " "); 
        if(x%7 == 0) 
        { 
         System.out.println(); 
         System.out.println("7 second message"); 
        } 
        if(x%15 == 0) 
        { 
         System.out.println(); 
         System.out.println("15 second message"); 
        } 
        try { Thread.sleep(1000); } 
        catch (Exception e) { e.printStackTrace(); } 
       } 
      } 
     }; 
     thread.start(); 
    } 
} 

これは、私はそれが何をしたい出力しますが、7と15秒のメッセージが表示されたときの要件は、出力に複数のスレッドのために呼び出されます。私はこれを行うには、複数のスレッドを使用する方法の周りに頭をラップすることはできません。

+0

を次のように ";"その後の条件; –

+0

ダング、どうして私はそれを逃しましたか?ありがとうございました。 – JMV12

答えて

2

条件の場合には、";"を削除する必要があります。

if(x%7 == 0); 

if(x%15 == 0); 

チェック次のコード

​​

このための私の出力あなたが削除する必要が

1 2 3 4 5 6 7 
7 second message 
8 9 10 11 12 13 14 
7 second message 
15 
15 second message 
16 17 18 19 20 21 
7 second message 
22 23 24 25 26 27 ... 
+0

私はこれを今行っており、私はまだ同じ出力を得ています。 – JMV12

+0

私はあなたが何かを逃したと思う、更新されたコードで確認してください。 –

+0

私は今起こっていたことを見ます。すべてが機能します。それをキャッチするために非常にありがとうございます。私はかなり愚かな間違いのためにかなりしばらく固まってきました。 – JMV12