Ответ
В Android/Java для гарантированного порядка пробуждения потоков можно использовать:
- Fair Lock (ReentrantLock с fair=true)
Гарантирует FIFO-порядок:
ReentrantLock lock = new ReentrantLock(true); // fair lock
lock.lock();
try {
// критическая секция
} finally {
lock.unlock();
}
-
Synchronized + wait()/notify()
В рамках одного монитора порядок пробуждения не гарантирован, но можно реализовать свою очередь ожидания. -
Semaphore с fair=true
Аналогично ReentrantLock:
Semaphore sem = new Semaphore(1, true); // fair semaphore
Важно: даже с fair-режимом абсолютной гарантии нет из-за особенностей планировщика ОС, но это максимально близкое решение. Для строгого порядка лучше использовать отдельные очереди задач (например, HandlerThread).