線程的概念:
????先要分清線程和進(jìn)程,還有線程和進(jìn)程的關(guān)系,這也是java面試中經(jīng)常涉及到的問(wèn)題
????狹義定義:進(jìn)程是正在運(yùn)行的程序的實(shí)例(an instance of a computer program that is being executed)。
????廣義定義:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。
????進(jìn)程相互之間是互相獨(dú)立的。
????線程是進(jìn)程執(zhí)行中最小的單位,一個(gè)進(jìn)程至少包含一個(gè)線程。
多線程的安全問(wèn)題:
? ? 多線程執(zhí)行過(guò)程中,若不做安全處理,同時(shí)對(duì)同一數(shù)據(jù)進(jìn)行修改,會(huì)導(dǎo)致并發(fā)的問(wèn)題。當(dāng)多個(gè)線程訪問(wèn)某個(gè)方法時(shí),不管你通過(guò)怎樣的調(diào)用方式或者說(shuō)這些線程如何交替的執(zhí)行,我們?cè)谥鞒绦蛑胁恍枰プ鋈魏蔚耐?,這個(gè)類的結(jié)果行為都是我們?cè)O(shè)想的正確行為,那么我們就可以說(shuō)這個(gè)類是線程安全的。
? ? 有兩種通用解決多線程安全問(wèn)題的辦法。
????第一種是使用synchronize關(guān)鍵字,同步控制線程。synchronize(Object)對(duì)象鎖,其他線程請(qǐng)求該對(duì)象時(shí)會(huì)等待直到持有對(duì)象鎖得線程執(zhí)行結(jié)束釋放對(duì)象鎖。
? ? 第二種是lock關(guān)鍵字
參考文章鏈接:https://mp.weixin.qq.com/s/BZ5zpxPgs3Y1rftCXoW8jw