2016-05-01 62 views
2

我的工作分配如下:打印定時線程

考慮一個共同的計數器的值都是非負整數, 最初爲零。時間打印線程將計數器遞增一個 ,並從執行開始每秒打印一次值。 A消息打印線程每隔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