一:線程和進程的基本概念,狀態(tài)?
進程概念 :
資源分配的基本單位,又是調(diào)度運行的基本單位。當(dāng)用戶運行自己的程序,系統(tǒng)內(nèi)核就創(chuàng)建一個進程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、I/O設(shè)備等。然后,把該進程放人進程的就緒隊列。進程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進程才真正運行。所以,進程是系統(tǒng)中的并發(fā)執(zhí)行的單位。?
在采用微內(nèi)核結(jié)構(gòu)(Mac、Windows
NT)的操作系統(tǒng)中,進程的功能發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運行的單位。在微內(nèi)核系統(tǒng)中,真正調(diào)度運行的基本單位是線程。因此,實現(xiàn)并發(fā)功能的單位是線程。
?線程概念:
進程中執(zhí)行運算的最小單位,亦即執(zhí)行處理機調(diào)度的基本單位。如果把進程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一。線程可以在處理器上獨立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個線程各自在單獨處理器上進行。操作系統(tǒng)提供線程就是為了方便而有效地實現(xiàn)這種并發(fā)性?
引入線程的好處?
(1)易于調(diào)度。?
(2)提高并發(fā)性。通過線程可方便有效地實現(xiàn)并發(fā)性。進程可創(chuàng)建多個線程來執(zhí)行同一程序的不同部分。?
(3)開銷少。創(chuàng)建線程比創(chuàng)建進程要快,所需開銷很少。。?
(4)利于充分發(fā)揮多處理器的功能。通過創(chuàng)建多線程進程(即一個進程可具有兩個或更多個線程),每個線程在一個處理器上運行,從而實現(xiàn)應(yīng)用程序的并發(fā)性,使每個處理器都得到充分運行。?
二:多線程有幾種實現(xiàn)方法
多線程有兩種實現(xiàn)方法:繼承Thread類;
實現(xiàn)Runable接口
三:線程與進程的區(qū)別
(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
(3)處理機分給線程,即真正在處理機上運行的是線程。?
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。
四:多線程同步和互斥有幾種實現(xiàn)方法,有何異同,在什么情況下分別使用它們
? (1)?臨界區(qū):通過對多線程的串行化來訪問公共資源或一段代碼,速度快,適合控制數(shù)據(jù)訪問。
??? (2)?互斥量:為協(xié)調(diào)共同對一個共享資源的單獨訪問而設(shè)計的。
???? (3)信號量:為控制一個具有有限數(shù)量用戶資源而設(shè)計。
??? (4)事件:用來通知線程有一些事件已發(fā)生,從而啟動后繼任務(wù)的開始。