Я использую внешнюю платформу с системой Event, для простоты, скажем, она выглядит так:
public interface EventListener {
public void eventA(int a);
public void eventB(int a, long b);
}
Таким образом, свойства системы событий таковы, что после события A может существовать или не быть событие B для того же самого a. Но если для этого есть событие B, оно должно быть в пределах 3000 мс.
Я не уверен, какое чистое решение есть для этой проблемы, я посмотрел в пакете java.util.concurrency
и не нашел ничего, что могло бы предложить хорошее чистое решение для этой проблемы. Я думал, что мог бы использовать Future<?>
, но я не мог найти хорошее решение.
Я напишу в псевдокоде, что я хочу сделать:
public void eventA(int a) {
// fired Event A
if (within the next 3 seconds there was an eventB for _exactly_ this a)
doSomething(a, b)
else
doSomething(a)
}
public void eventB(int a, long b) {
}
Пока что я использую ConcurrentHashmap<Int, Long>
, где я сохраняю все комбинации a-b из события B, и проверяю, получал ли я в течение 101000 такое сочетание a-b, но я не очень доволен этим решением. Я чувствую, что должен быть более чистый путь с API параллелизма высшего уровня Java 1.5.
Я был бы рад любому совету о чистом решении этой проблемы.