Если событий, когда возникает нужное условие много, то, как уже советовали, очередь - так задания из очереди будут выполняться быстрее, их можно обрабатывать порциями по несколько (десятков, сотен) штук.
Если событие возникает редко, то
Condition и вручную запускать его из принимающего данные потока.