Как остановить программу до выполнения определённого условия?

такой вопрос:

основная программа выполняется в главном потоке. Объект класса Timer (swing) генерирует событие каждые 30 сек.

В результате этого запускается обработчик этого события (в параллельном потоке).

Мне нужно остановить выполнение основного потока пока будет выполнятся обработчик событий.

Т.е. как только обработчик таймера начинает выполняться, основная программа должна остановиться (у неё пауза).

И как только обработчик таймера завершит свою работу, основная программа должна продолжить свою работу.

Подскажите, с помощью чего удобнее и правильнее решить эту задачу?


Ответы (1 шт):

Автор решения: Николай Гнап

Вы можете использовать кооперативную многозадачность.

Кооперативная многозадачность - это способ деления процессорного времени между потоками, при котором каждый поток обязан отдавать управление следующему добровольно.

Преимущества такого подхода - простота реализации, меньшие накладные расходы на переключение контекста.

Недостатки - если один поток завис или ведет себя некорректно, то зависает целиком вся система и другие потоки никогда не получат управление.

Можно почить здесь

→ Ссылка