我需要在java中使用多个线程生成数字序列(1 2 3 4 5 6 ...)。到目前为止我有这个:
所有线程都引用了此类的相同实例:
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 ...)
感谢您的每一条建议。
答案 0 :(得分:0)
如果您希望打印与增量一起发生,则必须同步它们。您案例中最简单的解决方法是:
synchronized(number) {
System.out.print(number.getNext());
}