- 線程安全問題(Thread Safe)
- 線程的生命周期(Thread Life Cycle)
- 上下文切換(Context Switch)
- 可靠性(Reliability)
1.線程安全問題
當(dāng)多個(gè)線程共享數(shù)據(jù)時(shí)所踊,如果處理不當(dāng)岔绸,可能導(dǎo)致數(shù)據(jù)不一致問題懈费,如臟讀、丟失數(shù)據(jù)更新等惯裕。
2. 線程生命周期
一個(gè)線程從創(chuàng)建到運(yùn)行結(jié)束會(huì)經(jīng)歷多個(gè)狀態(tài)。RUNNABLE是我們最期望線程擁有的狀態(tài)娄帖。實(shí)際上勿决,如果編碼不當(dāng)容易導(dǎo)致死鎖(DeadLock)。例如:線程T1持有鎖L1琅束,試圖持有L2扭屁,線程T2持有L2又試圖獲得鎖T1,這就會(huì)產(chǎn)生T1和T2一直處于等待對(duì)方釋放鎖而又無法獲得鎖的問題涩禀。當(dāng)然一直處于忙碌的線程也可能產(chǎn)生活鎖(Live lock)的問題料滥,如一個(gè)線程一直嘗試某個(gè)操作,條件一直無法滿足艾船,該線程一直嘗試并不會(huì)阻塞葵腹,活鎖是一種特殊饑餓狀態(tài),會(huì)會(huì)耗費(fèi)CPU資源丽声。線程饑餓,某種情況可能導(dǎo)致某些線程永遠(yuǎn)無法獲取CPU執(zhí)行的機(jī)會(huì)而永遠(yuǎn)處于RUANNABLE狀態(tài)的READY子狀態(tài)觉义。
3. 上下文切換
由于CPU資源稀缺性雁社,線程上下文切換是多線程編程的必然副產(chǎn)物,增加了系統(tǒng)的消耗晒骇,不利于系統(tǒng)的吞吐率霉撵。
4. 可靠性
線程作為進(jìn)程的組件,如果進(jìn)程意外終止洪囤,進(jìn)程內(nèi)的所有線程也會(huì)隨之無法運(yùn)行徒坡。