Java是最早開始有并發(fā)的語言之一,再過去傳統(tǒng)多任務(wù)的模式下,人們發(fā)現(xiàn)很難解決一些更為復(fù)雜的問題,這個時候我們就有了并發(fā).
引用
多線程比多任務(wù)更加有挑戰(zhàn)。多線程是在同一個程序內(nèi)部并行執(zhí)行,因此會對相同的內(nèi)存空間進行并發(fā)讀寫操作。這可能是在單線程程序中從來不會遇到的問題。其中的一些錯誤也未必會在單CPU機器上出現(xiàn),因為兩個線程從來不會得到真正的并行執(zhí)行。然而,更現(xiàn)代的計算機伴隨著多核CPU的出現(xiàn),也就意味著不同的線程能被不同的CPU核得到真正意義的并行執(zhí)行。
那么,要開始Java并發(fā)之路,就要開始從java線程開始說起.
本篇幅將是本系列博客的開山篇,也就是基礎(chǔ)線程的復(fù)習.
線程簡介
線程百科
線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。