上一篇博文:Java多線(xiàn)程(一) —— 線(xiàn)程的狀態(tài)詳解中詳細(xì)介紹了線(xiàn)程的五種狀態(tài)及狀態(tài)間的轉(zhuǎn)換。本文著重介紹了線(xiàn)程安全的相關(guān)知識(shí)點(diǎn),包括線(xiàn)程同步和鎖機(jī)制、線(xiàn)程間通信以及相關(guān)面試題的總結(jié)

一、線(xiàn)程安全

多個(gè)線(xiàn)程在執(zhí)行同一段代碼的時(shí)候,每次的執(zhí)行結(jié)果和單線(xiàn)程執(zhí)行的結(jié)果都是一樣的,不存在執(zhí)行結(jié)果的二義性,就可以稱(chēng)作是線(xiàn)程安全的。

講到線(xiàn)程安全問(wèn)題,其實(shí)是指多線(xiàn)程環(huán)境下對(duì)共享資源的訪(fǎng)問(wèn)可能會(huì)引起此共享資源的不一致性。因此,為避免線(xiàn)程安全問(wèn)題,應(yīng)該避免多線(xiàn)程環(huán)境下對(duì)此共享資源的并發(fā)訪(fǎng)問(wèn)。

線(xiàn)程安全問(wèn)題多是由全局變量和靜態(tài)變量引起的,當(dāng)多個(gè)線(xiàn)程對(duì)共享數(shù)據(jù)只執(zhí)行讀操作,不執(zhí)行寫(xiě)操作時(shí),一般是線(xiàn)程安全的;當(dāng)多個(gè)線(xiàn)程都執(zhí)行寫(xiě)操作時(shí),需要考慮線(xiàn)程同步來(lái)解決線(xiàn)程安全問(wèn)題。

 

二、線(xiàn)程同步(synchronized/Lock)

網(wǎng)友評(píng)論