2014-04-16 21 views

Trả lời

13

A Looper quản lý các tác vụ mà Chủ đề sẽ chạy. Nó đặt chúng trong một hàng đợi và sau đó Thread lấy nhiệm vụ tiếp theo trong dòng. Một Looper được gắn với một chủ đề cụ thể.

An Executor đóng gói quản lý và phân phối nhiệm vụ cho các Chủ đề khác nhau. Nếu bạn có một kích thước threadpool cố định là 1 thì tôi cho rằng nó sẽ tương tự như thiết kế cho Looper vì nó sẽ chỉ xếp hàng công việc cho một Thread đó. Nếu bạn có một threadpool với kích thước> 1 thì nó sẽ quản lý việc đưa nhiệm vụ cho Chủ đề tiếp theo có sẵn để thực hiện công việc, hoặc nói cách khác nó sẽ phân phối nhiệm vụ giữa tất cả các luồng.

chỉnh sửa: Được giới thiệu đọc: http://developer.android.com/reference/java/util/concurrent/package-summary.html

Chấp hành viên là linh hoạt hơn. Đối với Android, thời gian duy nhất tôi thực sự sử dụng Looper là khi cố gắng làm cho một Handler giao tiếp với luồng chính từ một luồng nền (thậm chí có thể nằm trong một ExecutorService). Ví dụ:

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

chỉ thấy trang web của bạn. nó sẽ là tốt đẹp nếu bạn đặt 3 câu hỏi phỏng vấn android trên đó – user3430459

+0

@ user3430459 Chắc chắn, một khi tôi nhận được một số thời gian để làm điều đó. :) –

+0

@ trevor-e Tôi nghĩ bạn muốn viết "ExecutorThreadPool" thay vì "Executor". ExecutorThreadPool quản lý và phân phối các tác vụ cho các chuỗi được gộp chung nếu có sẵn như bạn đã giải thích khá nhiều. Một Executor là một đối tượng được sử dụng để thực hiện các nhiệm vụ Runnable. – user3144836

Các vấn đề liên quan