Сон нить, пока событие не присутствовал в другом потоке

голоса
25

У меня есть две темы в качестве Android приложения, один является нить, а другой рабочий поток. То, что я хочу сделать, это, спать рабочий поток, пока нить не завершит обработку метода OnDraw.

Как я могу это сделать? есть ли ожидание сигнала или что-то?

Задан 23/09/2008 в 16:32
источник пользователем
На других языках...                            


2 ответов

голоса
34

Дайте java.lang.Object между двумя нитями, единственной целью которых является рассказать рабочий поток, когда он может продолжать свою работу. Всякий раз, когда рабочий поток достигает точки, где он должен спать, он делает это:

stick.wait();

Когда нить заканчивает свою работу OnDraw, он называет это:

stick.notify();

Обратите внимание, что требование о том, что нить владеет монитором на объекте. В вашем случае, это должно быть достаточно простым для обеспечения с небольшим блоком синхронизации:

void onDraw() {
  ...
  synchronized (stick) {
    stick.notify();
  }
} // end onDraw()

Обратитесь к Javadoc для java.lang.Object об этих методах (и notifyAll, только в случае); они очень хорошо написаны.

Ответил 23/09/2008 d 16:45
источник пользователем

голоса
2

Если вы хотите concurreny API более высокого уровня (с вещами, как барьеры), вы можете попробовать портировать в Java 5 параллелизм API, который работает на Java 1.3 и выше, и может работать на Android. Подобных Object.wait / уведомляют будет работать, но они могут быть немного немногословный.

Backport-Util-параллельный

Ответил 23/09/2008 d 17:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more