В метод run я добавил строку с значением count в данный момент времени.
@Override
public void run() {
do {
synchronized (values) {
incrementCount();
System.out.println(count);
values[getCount()] = 1;
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
} while (getCount() < 100);
}
И заметил, что результат зависит от значения монитора. synchronized (values) Например если использовать, то в консоль выводится:
1
2
3
.
.
.
98
99
100.
Однако если использовать, synchronized (count) то в консоль выводится что-то такое
2
4
3
1
5
6
.
.
.
96
94
95
97
99
98
100
И приэ этом выводится сообщение "Массив values содержит элементы неравные 1".
Помогите, пожалуйста, разобраться почему так происходит.