android程式與執行緒詳解四:執行緒安全和程式間通訊
執行緒安全
在某些情況下,你實現的方法可能會在不同的執行緒中呼叫,所以它們必須被實現成“執行緒安全的”。
這首先體現在可以遠端呼叫的方法上—比如在boundservice中的方法。當在一個程式中呼叫同一個程式中的IBinder上所實現的方法時,這個方法會在呼叫者的執行緒中執行(IBinder不理解的看這裡:http://blog.csdn.net/nkmnkm/article/details/6453218)。然而,當這個呼叫從另一個程式中發出時,方法會線上程池中某個被選出的執行緒中執行,這個執行緒在與IBinder相同的程式中(它不是執行於程式的介面執行緒中)。例如,儘管一個service的onBind()方法在service所在程式的介面執行緒中呼叫,onBian()所返回的物件的方法(例如,一個子類所實現的那些RPC方法們)將線上程池的執行緒中呼叫。因為一個service可以擁有多個客戶端,某個時刻可能一個或多個池中執行緒被用於執行一個Ibinder的同一個方法。IBinder的方法們因此必須被實現為執行緒安全的。
同樣的,一個內容提供者也可能收到來自不同執行緒的資料請求。儘管ContentResolver和ContentProvider類隱藏了程式間通訊的管理細節,ContentProvider的那些響應請求的方法們—query(),insert(), delete(), update(), 和getType()—會被內容提供者所在的程式中的執行緒池中的執行緒呼叫,而不是被程式的介面執行緒呼叫。因為這些方法們可能在同一時刻被任意數量的執行緒呼叫,所以它們必須被實現為執行緒安全的。
程式間通訊
Android通過遠端呼叫(RPCs)提供了程式間通訊(IPC)機制,於是一個方法可以被另一個應用的Activity呼叫,但是它卻是遠端執行的(在另一個程式中),而又把結果返回給呼叫者。這使得必須分解一個方法呼叫和它的資料到作業系統能理解的水平,把它們從本地程式和地址空間傳到遠端程式和地址空間,然後重組並重演呼叫過程。要返回的結果以相反的方向傳送。Android提供了所有的執行這些IPC傳輸的程式碼,於是你可以專注於定義和實現RPC程式介面。
要執行IPC,你的應用必須繫結到一個service,使用方法bindService()。
相關文章
- android程式與執行緒詳解二:執行緒Android執行緒
- android程式與執行緒詳解一:程式Android執行緒
- Android執行緒間通訊Android執行緒
- 程式通訊 執行緒通訊執行緒
- 執行緒4--執行緒間通訊執行緒
- Java併發程式設計之執行緒安全、執行緒通訊Java程式設計執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- android程式與執行緒詳解三:AsyncTaskAndroid執行緒
- java多執行緒5:執行緒間的通訊Java執行緒
- 多執行緒之間通訊及執行緒池執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 執行緒間的通訊執行緒
- Android程式與執行緒Android執行緒
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- 程式間通訊(linux程式與執行緒學習筆記)Linux執行緒筆記
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 《Java 多執行緒程式設計核心技術》筆記——第3章 執行緒間通訊(四)Java執行緒程式設計筆記
- android程式和執行緒Android執行緒
- Android 程式和執行緒Android執行緒
- Java多執行緒-執行緒通訊Java執行緒
- 程式設計思想之多執行緒與多程式(2):執行緒優先順序與執行緒安全程式設計執行緒
- 程式和執行緒有什麼區別?(Process and Threads)程式之間和執行緒之間是如何通訊的?執行緒thread
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- 子執行緒與UI執行緒的通訊(委託)執行緒UI
- Java中的執行緒通訊詳解Java執行緒
- 程式與執行緒執行緒
- 執行緒與程式執行緒
- Android開發之執行緒間通訊Android執行緒
- Android的程式與執行緒Android執行緒
- 多執行緒-程式和執行緒的概述執行緒
- Android小知識-Java多執行緒相關(執行緒間通訊)上篇AndroidJava執行緒
- 瞭解 Android 的程式和執行緒Android執行緒
- 程式和執行緒執行緒
- 執行緒和程式執行緒
- 詳解Java執行緒安全Java執行緒
- 阿里Android開發規範:程式、執行緒與訊息通訊阿里Android執行緒
- android 主執行緒和子執行緒之間的訊息傳遞Android執行緒
- Java 多執行緒基礎(四)執行緒安全Java執行緒