Каков рекомендуемый / лучший способ реализовать вызов функции блокировки в Java, который впоследствии может быть разблокирован вызовом из другого потока?
По сути, я хочу иметь два метода для объекта, где первый вызов блокирует любой вызывающий поток, пока второй метод не будет запущен другим потоком:
public class Blocker {
/* Any thread that calls this function will get blocked */
public static SomeResultObject blockingCall() {
// ...
}
/* when this function is called all blocked threads will continue */
public void unblockAll() {
// ...
}
}
Намерение, кстати, не просто получить поведение блокировки, но написать метод, который блокирует до некоторой будущей точки, когда возможно вычислить требуемый результат.