Java线程同步 - 简单的数字序列

时间:2015-04-06 21:02:58

标签: java multithreading

我需要在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 ...)

感谢您的每一条建议。

1 个答案:

答案 0 :(得分:0)

如果您希望打印与增量一起发生,则必须同步它们。您案例中最简单的解决方法是:

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