1. 程式人生 > >Android 執行緒間通訊的方式

Android 執行緒間通訊的方式

1、通過單向資料管道傳遞資料

管道(使用PipedWriter/ 建立PipedReader)是java.io包的一部分。也就是說,它們是一般的Java功能,而不是Android特定的。管道為同一程序內的兩個執行緒提供了一種連線和建立單向資料通道的方法。生產者執行緒將資料寫入管道,而使用者執行緒從管道讀取資料。

2、共享記憶體通訊

共享記憶體(使用程式設計中已知的記憶體區域作為堆)是線上程之間傳遞資訊的常用方法。應用程式中的所有執行緒都可以訪問程序中的相同地址空間。

3、實現消費者 - 生產者模式 BlockingQueue

執行緒信令是一種低階,高度可配置的機制,可以適應許多用例,但它也可能被認為是最容易出錯的技術。因此,Java平臺線上程信令機制上構建高階抽象,以解決執行緒之間的任意物件的單向切換。抽象通常被稱為“解決生產者 - 消費者同步問題。”問題包括可能存在生成內容的執行緒(生產者執行緒)和消費內容的執行緒(消費者執行緒)的用例。生產者將訊息傳遞給消費者進行處理。執行緒之間的中介是具有阻塞行為的佇列,即java.util.concurrent.BlockingQueue。

4、訊息佇列

訊息處理機制是Android平臺的基礎,API位於android.os包中,其中包含一組實現該功能的類Handler。

android.os.Looper
與唯一的消費者執行緒關聯的訊息排程程式。

android.os.Handler
消費者執行緒訊息處理器,以及生產者執行緒將訊息插入佇列的介面。Looper可以有許多關聯的處理程式,但它們都將訊息插入到同一佇列中。

android.os.MessageQueue
要在消費者執行緒上處理的無限連結訊息列表。每個Looper和Thread-最多隻有一個MessageQueue。

android.os.Message
要在使用者執行緒上執行的訊息。