一:在了解 java 線程之前,大致復習一下進程极阅。
? ? ? ? 操作系統(tǒng)中最核心的概念就是進程胃碾,即使可以利用的 CPU 只有一個,但是他們也支 持(偽)并發(fā)操作的能力涂屁,可以講一個單獨的 CPU 變換成多個虛擬的 CPU书在。
? ? ? ? 在現(xiàn)在程序設計中,CPU 由一個進程快速切換到另一個進程拆又,使每個進程各運行幾十或幾百個毫秒儒旬,嚴格來說,在某一瞬間帖族,CPU 只能運行一個進程栈源。但在一秒鐘期間,他可以運行多個進程竖般,這樣就產(chǎn)生并行的錯覺甚垦,但是多處理器系統(tǒng)可以實現(xiàn)真正的硬件并行。
二:線程
? ? ? ?每個進程都有一個地址空間和一個控制線程。
? ? ? ? 產(chǎn)生原因:線程比進程更輕量級艰亮,所以它們比進程更容易創(chuàng)建闭翩,也更容易撤銷,創(chuàng)建一個線程比一個進程要快10~100倍迄埃。而且線程可以共享所有可用數(shù)據(jù)疗韵。
三:并發(fā)級別
? ? ? ? ?1:阻塞,如果一個線程是阻塞的,那么在其他線程釋放資源之前,當前線程無法執(zhí)行,當我們使用 Synchronized關鍵字或者重入鎖,都會試圖在執(zhí)行后續(xù)代碼前,得到臨界區(qū)的鎖,如果得不到就會被掛起.
? ? ? ? ? 2:無饑餓.
?? ? ? ? ?3:無障礙.
? ? ? ? ? 4:無鎖.