1抛蚤、線程的概念及實(shí)現(xiàn)方式
所謂線程(Thread) 是指一串連續(xù)的執(zhí)行動(dòng)作旅掂,以達(dá)成一項(xiàng)目的搁骑。線程是程序的最小執(zhí)行單元。
線程的兩種實(shí)現(xiàn)方式
2屋讶、線程間通訊
任何線程間通訊都是通過handler向MessageQueue發(fā)送信息冰寻,Looper對(duì)象循環(huán)讀取MQ中的信息。
主線程或子線程向主線程通訊:
由于主線程誕生時(shí)皿渗,系統(tǒng)會(huì)自動(dòng)幫其生成一個(gè)MessageQueue和一個(gè)Looper斩芭,我們?cè)谥骶€程創(chuàng)建Handler對(duì)象轻腺,通過handler對(duì)象發(fā)送消息給MQ就實(shí)現(xiàn)了主線程或子線程向主線程通訊的過程。
主線程或子線程向子線程通訊:
由于子線程誕生時(shí)沒有MQ和Looper對(duì)象划乖,我們需要在子線程創(chuàng)建Looper和MQ對(duì)象贬养,通過在子線程創(chuàng)建的Handler對(duì)象傳遞消息即可。
總結(jié)琴庵,Handler可以看做郵差的角色误算,郵差在哪個(gè)線程創(chuàng)建,消息即可送達(dá)到哪個(gè)線程的MQ迷殿。
3儿礼、線程間安全機(jī)制
為防止不同線程同時(shí)操作同一變量,可以在變量或者方法上加鎖庆寺,synchronized