handler實現執行緒間通訊的原理 looper

2021-06-05 14:02:40 字數 446 閱讀 6277

涉及到的幾個概念:

message:訊息的乙個封裝類,它的物件由訊息佇列messagequeue統一列隊,終由handler處理。

handler:訊息處理類,負責message的傳送及處理。使用handler時,需要實現handlemessage(message msg)方法來對特定的message進行處理,例如更新ui等。

messagequeue:訊息佇列,用來存放handler傳送過來的訊息,並按照fifo規則執行。當然,存放message並非實際意義的儲存,而是將message以鍊錶的方式串聯起來的,等待looper的抽取。

looper:訊息幫浦,不斷地從messagequeue中抽取message執行。因此,乙個messagequeue需要乙個looper。

uithread:主線程,android程序啟動時自動載入的執行緒,所有的ui操作都有該執行緒完成,其他執行緒不能直接修改ui工作執行緒

執行緒間通訊之Handler

使用handler在主線程和子執行緒之間傳遞訊息的機制,就是通過handler獲取主線程的訊息佇列,將子執行緒的訊息傳送到主線程的訊息佇列,由looper取出後交給目標handler處理。looper 首先主線程會初始化時呼叫looper.prepare 建立主線程的looper,建立的looper...

handler程序間通訊機制

handler在哪個activity或者service執行緒建立,那麼looper就和哪乙個執行緒進行了繫結。如果是自己建立的執行緒那麼就要使用looper中的prepare函式來繫結了。在handler建立後就例項化了乙個looper並關聯了乙個訊息佇列mq。在其他的傳送訊息的執行緒中 接受執行緒...

python Queue實現執行緒間通訊

python中queue是訊息佇列,提供執行緒間通訊機制,python3中重名為為queue queue模組中的類 queue maxsize 0 建立乙個fifo佇列,若給定最大值,佇列沒有空間時阻塞,否則是無限佇列 lifoqueue maxsize 0 建立乙個棧,maxsize含義同上 pr...