Наличие этого объявления ожидания:
public final native void wait(long timeout) throws InterruptedException;
Он может выйти из InterruptedException или тайм-аутом или потому, что метод Notify/NotifyAll был вызван в другом потоке, исключение легко поймать, но...
Есть ли способ узнать, был ли причиной выхода из-за этого был тайм-аут или уведомление?
EDIT:
Это сложный способ, который мог бы работать (хотя мне это не нравится)
long tBefore=System.currentTimeMillis();
wait(TIMEOUT);
if ((System.currentTimeMillis() - tBefore) > TIMEOUT)
{
//timeout
}