2011-12-09 3 views
9

누군가 BlockingQueue에서 작업을 가져 오는 일반 스레드를 만드는 대신 "루퍼 (lipe)"기능을 사용하여 "파이프 라인 스레드"를 만들어야하는 이유를 설명 할 수 있습니까? 표면적으로 같은 일을하는 두 가지 방법처럼 보입니다.Android Looper 대 BlockingQueue?

답변

4

BlockingQueue를 사용하면 여러 소비자와 제작자를 가질 수 있지만 Looper 메커니즘을 사용하면 여러 제작자를 가질 수 있지만 하나의 소비자 만 가질 수 있습니다.

그래서 루퍼 스레드에서 한 번에 하나의 작업 (실행 가능) 만 실행합니다. 루퍼 메커니즘은 UI 스레드 (단일 스레드로 실행되므로 단일 스레드 소비자로 생각할 수 있음)에서 실행 파일 (메시지로 캡슐화 된 작업)을 쉽게 실행할 수 있도록 작성되었습니다.

루퍼/핸들러는 지연된 기능 BlockingQueue가 처리하지 않는 작업을 제외시킵니다. 다시 이것은 UI 툴킷의 맥락에서 중요합니다.