提及多線程,我們就會想到進(jìn)程、線程、中央處理器(CPU)。那么什么是進(jìn)程呢?進(jìn)程是程序執(zhí)行的最小單位、線程是程序的執(zhí)行流,CPU 則是處理執(zhí)行流的中轉(zhuǎn)站和翻譯器。
那么并發(fā)呢?當(dāng)有多個線程在操作時,如果系統(tǒng)只有一個 CPU,則它根本不可能真正同時進(jìn)行一個以上的線程,它只能把 CPU 運(yùn)行時間劃分成若干個時間段,再將時間 段分配給各個線程執(zhí)行,在一個時間段的線程代碼運(yùn)行時,其它線程處于掛起狀。這種方式我們稱之為并發(fā)(Concurrent)。
一個比較簡潔的例子:如果進(jìn)程是火車的車廂、那么火車就是線程,我們的火車站調(diào)度站就是 CPU。很久以前,我們只能讓一輛火車進(jìn)站出站后,下一輛火車才能進(jìn)站,這樣的效率很差,大部分時間都是火車排長隊的等待,我們的調(diào)度資源處于極大的浪費(fèi);后來人們改進(jìn)了方案,增加了很多條軌道,可以讓多輛火車同時進(jìn)站和出站,這樣調(diào)度資源得到高效利用;沒開心幾天,問題發(fā)生了,突然有一天,發(fā)生了一場災(zāi)難,因為沒有有效的管理,兩量同時進(jìn)站相向的火車并軌相撞了,為了避免這類并行問題的發(fā)生,人們加入優(yōu)先級調(diào)度,讓客車優(yōu)先于貨運(yùn)車,加入快車、慢車,安排好時間管理,這樣從根本上杜絕火車進(jìn)站并軌的問題。
可能上面的描述還不能讓你有個更好的理解,那么來這里
推薦學(xué)習(xí)過操作系統(tǒng)的人直接觀看 《Java 并發(fā)編程》