Я реализовал это следующим образом
Тема A:
req.run();
synchronized (req) {
try {
req.wait(3000);
rawResponse = eq.ReturnXML;
logger.info("[" + refID + "] Response recieved: " + rawResponse);
responseRecieved = true;
req.notify();
} catch (InterruptedException ex) {
logger.error("Error waiting on req", ex);
}
}
Тема B:
synchronized (req) {
while (!responseRecieved) {
try {
req.wait(3000);
} catch (InterruptedException ex) {
logger.error("Error waiting on req while trying to get state", ex);
}
}
}
Тема A выполняет запрос и ожидает ответа, втем временем поток B только ждет ответа.Если ответ уже поступил, он не ждет.