- Баллы
- 98
- Имя в Minecraft
- Dymeth
Добрых суток.
Недавно задался, казалось бы, простым вопросом: как реализовать "прерывание выполнения" в основном потоке.
На ум приходит - создать таймер (по сути это отдельный поток), в его теле прописать обычный слип и автоостановку. Хорошо, тогда как "дождаться" завершения таймера? Помнится, использовал различные шедулеры, различные методы типо .join(). Но по непонятным для меня причинам все это дело либо просто не работало, либо кидало адские исключения.
Естественно, усыплять основной поток нельзя.
Пихать кучу кода в отдельный - тоже не вариант. Мало того, что это некомфортно, так ещё и многие баккитовские методы отказываются работать "не в своей тарелке".
В качестве примера реализации можно привести туториал на Плексе (или Хайпе, точно не помню): сообщение, ожидание, телепортация. Но там, скорее всего, весь туториал выполняется отдельным потоком. Мне же, как я указал выше, это крайне неудобно.
Идеальным вариантом был бы какой-нибудь метод cooldown(int time).
Да, звучит глупо, согласен. Но что поделать...
У кого какие мысли и предложения?
Недавно задался, казалось бы, простым вопросом: как реализовать "прерывание выполнения" в основном потоке.
На ум приходит - создать таймер (по сути это отдельный поток), в его теле прописать обычный слип и автоостановку. Хорошо, тогда как "дождаться" завершения таймера? Помнится, использовал различные шедулеры, различные методы типо .join(). Но по непонятным для меня причинам все это дело либо просто не работало, либо кидало адские исключения.
Естественно, усыплять основной поток нельзя.
Пихать кучу кода в отдельный - тоже не вариант. Мало того, что это некомфортно, так ещё и многие баккитовские методы отказываются работать "не в своей тарелке".
В качестве примера реализации можно привести туториал на Плексе (или Хайпе, точно не помню): сообщение, ожидание, телепортация. Но там, скорее всего, весь туториал выполняется отдельным потоком. Мне же, как я указал выше, это крайне неудобно.
Идеальным вариантом был бы какой-нибудь метод cooldown(int time).
Да, звучит глупо, согласен. Но что поделать...
У кого какие мысли и предложения?
Последнее редактирование: