Мне часто нужно, чтобы поток ждал результата другого потока. Похоже, что для этого должна быть какая-то поддержка в java.util.concurrent, но я не могу ее найти.
Exchanger очень близок к тому, о чем я говорю, но он двунаправленный. Я хочу, чтобы поток A ждал только потока B, а не оба ждут друг друга.
Да, я знаю, что могу использовать CountDownLatch, или Semaphore, или Thread.wait (), а затем управлять результатом вычислений самостоятельно, но похоже, что мне где-то не хватает удобного класса.
Что мне не хватает?
ОБНОВЛЕНИЕ
// An Example which works using Exchanger
// but you would think there would be uni-directional solution
protected Exchanger exchanger = new Exchanger();
public void threadA() {
// perform some computations
int result = ...;
exchanger.exchange(result);
}
public void threadB() {
// retrieve the result of threadA
int resultOfA = exchanger.exchange(null);
}