2014-04-16 2 views

답변

13

Looper은 스레드가 실행할 작업을 관리합니다. 그것들을 큐에 놓으면 Thread는 다음 작업을 수행합니다. 루퍼는 특정 스레드에 묶여 있습니다.

Executor은 작업을 관리하고 다른 스레드에 배포하는 것을 캡슐화합니다. 고정 된 쓰레드 풀 크기가 1이면 Looper와 디자인이 유사 할 것이라고 생각합니다. 왜냐하면 그 스레드에 대한 작업을 대기열에 넣기 때문입니다. 크기가 1보다 큰 스레드 풀이있는 경우 작업을 수행 할 수있는 다음 스레드로 작업을 제공하는 것을 관리합니다. 즉 모든 스레드간에 작업을 배포합니다.

편집 : 추천 도서 : http://developer.android.com/reference/java/util/concurrent/package-summary.html

집행 인 더 유연합니다. 안드로이드의 경우 루퍼를 사용하는 유일한 경우는 Handler가 백그라운드 스레드 (기본 ExecutorService에있을 수도 있음)의 주 스레드와 통신하려고 할 때입니다. 예를 들어 :

Handler mainThreadHandler = new Handler(Looper.getMainLooper()); 
mainThreadHandler.post(new Runnable...); //runs on main thread 
+0

은 당신의 웹 사이트를보고 한 번에 스레드 5를 발사, 그 동의 해달라고. 당신이 거기에 3 개의 안드로이드 인터뷰 질문을 넣으면 좋을 것입니다. – user3430459

+0

@ user3430459 확실히, 일단 내가 할 시간이 있습니다. :) –

+0

@ trevor-e "Executor"대신 "ExecutorThreadPool"을 쓰려고했다. ExecutorThreadPool은 사용 가능한 경우 풀 스레드에 작업을 관리하고 배포합니다. Executor는, Runnable 태스크의 실행에 사용되는 객체입니다. – user3144836

관련 문제