Ну, я боюсь, что это довольно бесполезный вопрос, потому что если мы хотим, чтобы последовательное упорядочение потоков было бесполезным, ну да, вот одно из решений: предположим, у нас N потоков.
В теме 0 следует записать числа 0, N, 2N, 3N, ..
В теме 1 следует написать число 1, N + 1, 2N + 1, 3N + 1
хорошо, вы получаете образец. Как это сделать? Достаточно просто, нам в основном нужен метод, который ждет, пока наша очередь писать. Реальное простое решение со статическими объектами для простоты:
private static volatile int globalVal = 0;
private static Object lock = new Object();
public void writeInt(int val) {
synchronized(lock) {
while (globalVal != val) {
try {
lock.wait();
}
catch(InterruptedException e) {
}
}
System.out.println(val);
globalVal++;
lock.notifyAll();
}
}
логика в самих потоках оставлена читателю в качестве упражнения.