Я пытаюсь напечатать до 100, используя несколько потоков, но вывод не в порядке. Я попытался заблокировать метод печати, но это ничего не исправило. Мне нужен вывод в порядке. Подскажите, где может быть ошибка?
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
class Scratch {
private static AtomicInteger t = new AtomicInteger(0);
private static Object lock = new Object();
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(400);
for (int i = 0; i < 100; i++) {
executorService.execute(() -> {
int current = t.incrementAndGet();
printer(current);
});
}
executorService.shutdown();
}
public static void printer(int i) {
synchronized (lock) {
System.out.println(i);
}
}
}
Вывод не в порядке:
Output:
1
4
3
2
5
6
7
...
Подробнее здесь: https://stackoverflow.com/questions/789 ... t-of-order