【问题标题】:Java threads synchronization - simple sequence of numbersJava线程同步——简单的数字序列
【发布时间】:2015-04-06 21:02:58
【问题描述】:

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

感谢您的每一个建议。

【问题讨论】:

  • 多线程这个顺序程序有什么意义?

标签: java multithreading


【解决方案1】:

如果您希望打印与递增一起发生,则必须将它们同步。在您的情况下,最简单的解决方法是:

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

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多