1.1并發(fā)簡(jiǎn)史
操作系統(tǒng)多進(jìn)程出現(xiàn)的原因
資源利用率:一個(gè)程序等待某個(gè)外部操作的時(shí)候運(yùn)行另一個(gè)程序
公平性:粗粒度的時(shí)間分片共享計(jì)算機(jī)資源
便利性:多個(gè)程序執(zhí)行多個(gè)任務(wù)
促使進(jìn)程出現(xiàn)的因素同樣也促使著線程的出現(xiàn)
線程允許同一個(gè)進(jìn)程中同時(shí)存在多條程序控制流。線程共享進(jìn)程范圍內(nèi)的資源,例如內(nèi)存句柄、文件句柄
每個(gè)線程有各自的程序計(jì)數(shù)器、棧以及局部變量
線程也稱(chēng)作輕量級(jí)進(jìn)程
1.2線程的優(yōu)勢(shì)
1.2.1發(fā)揮多處理的的強(qiáng)大能力
操作系統(tǒng)調(diào)度單位是線程,如果一個(gè)程序只有一個(gè)線程,那么只能在一個(gè)處理器上運(yùn)行
多線程程序可以再多個(gè)處理器上運(yùn)行,如果設(shè)計(jì)正確,可以通過(guò)處理器資源利用率來(lái)提升系統(tǒng)的吞吐率
多線程有助于單處理器系統(tǒng)上獲得更高的吞吐率
1.2.2建模的簡(jiǎn)單性
可以將復(fù)雜并且異步的工作流進(jìn)一步分解為一組簡(jiǎn)單并且同步的工作流,每個(gè)工作流在單獨(dú)的線程中運(yùn)行,并在特定的同步位置進(jìn)行交互
1.2.3異步事件的簡(jiǎn)化處理
1.2.4響應(yīng)更靈敏的用戶(hù)界面
1.3線程帶來(lái)的風(fēng)險(xiǎn)
1.3.1安全性問(wèn)題
永遠(yuǎn)不發(fā)生糟糕的事情
1.3.2活躍性問(wèn)題
某件正確的事情最終會(huì)發(fā)生
1.3.3性能問(wèn)題
1.4線程無(wú)處不在
Timer
Servlet和JSP
RMI
Swing和AWT