문제

Android 응용 프로그램에 두 개의 스레드가 있습니다. 하나는 뷰 스레드이고 다른 하나는 작업자 스레드입니다. 내가하고 싶은 것은 뷰 스레드가 ONDRAW 메소드의 처리를 종료 할 때까지 작업자 스레드를자는 것입니다.

어떻게 할 수 있습니까? 신호를 기다리는 것이 있습니까?

도움이 되었습니까?

해결책

Java.lang.object를 공유하십시오. 작업자 스레드가 잠을 자야 할 지점에 도달 할 때마다 다음을 수행합니다.

stick.wait();

뷰 스레드가 OnDraw 작업을 완료하면 다음을 호출합니다.

stick.notify();

참고 뷰 스레드가 객체의 모니터를 소유해야합니다. 귀하의 경우, 이것은 작은 동기화 블록으로 시행하는 것이 매우 간단해야합니다.

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

Java.lang.object는 Javadoc을 문의하십시오 (이 방법에 대해서는 Notifyall); 그들은 매우 잘 작성되었습니다.

다른 팁

더 높은 수준의 Concurreny API (장벽과 같은 것들)를 원한다면 Java 1.3 이상에서 작동하는 Java 5 동시성 API의 백 포트를 시도하고 Android에서 작동 할 수 있습니다. 객체와 같은 것들이 Wait/Notify가 작동하지만 약간 간결 할 수 있습니다.

백 포트-이틸-커커 런트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top