執行緒通訊,多執行緒

2021-08-02 19:22:36 字數 1188 閱讀 2953

多執行緒

thread+handler

thread處理一些複雜的業務邏輯(耗時的事情)

handler在主線程中接收訊息的乙個物件

mhandler.sendmessage(msg); 傳送乙個訊息物件

mhandler.sendemptymessage(what) 傳送空訊息,只有what沒有obj

mhandler.send...delayed()延遲傳送

mhandler.post...() 提交乙個任務到目標執行緒執行

mhandler.post(new runnable()

});

執行緒通訊

looper:執行緒中的乙個迴圈物件,主要監控該執行緒的訊息佇列messagequeue

looper.mylooper();得到當前執行緒的looper物件

looper.getmainlooper();得到主線程的looper物件

messagequeue:執行緒中訊息的佇列,由該執行緒對應的handler將訊息壓入,由looper取出放到該執行緒壞境中執行

handler:將訊息壓入訊息佇列中

乙個執行緒最多只有乙個looper,最多只有乙個messagequeue,可以有多個handler

子執行緒自己管理handler以及looper

class threadb extends thread 

};//處理其他事情

//開始監聽當前執行緒的訊息佇列

looper.loop();

//盡量不要做其他事情

}}

handlerthread

內部已經做好looper的管理的執行緒

handlerthread ht = new handlerthread("c");

//啟動執行緒

ht.start();

//建立handler

handler h = new handler(ht.getlooper())

};

發訊息給handlerthread

h.sendemptymessage(101);
終止handlerthread

ht.getlooper().quit();

多執行緒 執行緒通訊

總結 今天小鹹兒來講解乙個好玩的事,那就是執行緒之間該如何通訊,執行緒通訊之後又會出現什麼問題?先來一張導圖來看看執行緒通訊的分布?疑問 如果想要執行緒按照使用者自定義的順序執行的話,那該如何操作呢?思考 如果能夠讓執行緒等待先執行的執行緒執行完,再執行不就能達到效果了嗎!果然出現問題之後,就會有對...

多執行緒 執行緒通訊

1.使用wait notify方法實現執行緒之間的通訊 1 有其他執行緒呼叫同乙個物件的notify或者notifyall方法 呼叫notify notifyall方法之前 2 被喚醒之後重新獲得物件的鎖 呼叫notify notifyall方法之後 編寫測試 如下 執行結果 2.管道通訊 管道流主...

多執行緒通訊

from threading import from time import ctime import socket import pickle class data def init self,kind none,to none,from none,message none self.kind k...