三. 總結
下面就從兩個方面介紹android 常見的多執行緒設計:
android 上層業務常見的多執行緒設計
android 在 mainthread 不能處理耗時的任務,只能更新ui. 所以當我們需要處理耗時的任務的時候都需要建立執行緒,我們常用的幾種方式:
採用thread的方式
當我們需要在後台處理一些耗時的單個任務且並不需要更新ui時,通過thread
方式實現;比如日誌的上報
thread + handler
thread + callable + futuretask
先舉個栗子:我到一家西服店定製一款西服,西服製作過程大概需要2天的時間,這個時候西服店往往會給你開個憑據,兩天後讓你拿著這個憑據來去西服;
上面的栗子就是乙個典型的future多執行緒開發模式,這裡future就是憑據的意思,通過future 拿到我們期望的結果,如果這時「西服」還沒有做好,我們甚至可以取消;
callable
callable =
newcallable
()};
future
future =
newfuturetask
<
>
(callable)
;new
thread
((futuretask)future)
.start()
;//兩天時間到了,拿西服
string name = future.
get();
//如果西服還沒有做好,可以取消
future.
cancel
(false
);
executorservice + callable + futuretask
隨著西服店生意越來越好,西服店老本為了節約成本與讓顧客等待的時間進行平衡, 又招了3個員工做西服,那這時其實就是多執行緒開發裡面的執行緒池原理;通過執行緒池對執行緒的快取,避免系統不斷的啟動和關閉新執行緒,降低消耗系統資源;
callable
callable =
newcallable
()};
executorservice executorservice = executors.
newfixedthreadpool(10
);future
submitfuture = executorservice.
submit
(callable);
string name = submitfuture.
get();
submitfuture.
cancel
(false
);
asynctask
它的內部實現可以分為三部分:
通過上面的分析要5個執行緒同步處理,這五個執行緒之間的通訊就是通過同步鎖+訊號機制+佇列實現;
Android多執行緒之常見的執行緒形態
andorid中的執行緒除了傳統的thread外,主要還有asynctask handlerthread intentservice。asynctaskasynctask是一種輕量的非同步任務類,不僅可以在後台執行任務,還能把執行的進度和最終的結果傳遞給ui執行緒以便更新ui。asynctask底層...
Android 多執行緒
1 簡介 2 android 平台下的多執行緒 package com.powerise.thread import android.os.bundle import android.view.view import android.view.view.onclicklistener import ...
Android 多執行緒
1,常用的thread 和running的方法 public static void thread thread.start private static void running thread thread new thread runnable thread.start private stat...