2015-04-06 32 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()); 
}