2015-04-06 30 views
-4

我需要使用java中的多線程生成數字序列(1 2 3 4 5 6 ...)。到目前爲止,我有這樣的:Java線程同步 - 簡單的數字序列

所有線程都提到這一類的同一個實例:代碼

class Number{ 
private static int number; 

public Number (int i){ 
    number = i; 
} 

public synchronized int getNext(){ 
     number+=1; 
     return number; 
} 
} 

而且在每個線程,我循環這一部分:

System.out.print(number.getNext()); 

作爲結果,我得到的數字序列,但他們沒有排序,如下所示:1 3 2 5 4 8 9 7 6 ....

我怎樣才能同步我的線程,並因此得到有序的數字? (1 2 3 4 5 ...)

感謝您的每一個建議。

+1

這個順序程序多線程有什麼意義? –

回答

0

如果希望打印與增量一起發生,則必須同時對它們進行同步。在你的情況下最簡單的修復是:

synchronized(number) { 
    System.out.print(number.getNext()); 
}