2015-04-06 3 views
-4

Мне нужно сгенерировать последовательность чисел (1 2 3 4 5 6 ...), используя несколько потоков в java. До сих пор у меня есть это:Синхронизация потоков 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()); 
} 
Смежные вопросы