第十六章 多線程

??線程(Thread)是編程中的一個(gè)很重要的概念。在很多情況下,采用多線程編程,可以提高應(yīng)用程序響應(yīng)速度、提高運(yùn)行效率、提升吞吐量。
??應(yīng)用程序的操作大致可以分為兩種類型,一種是占用CPU的(CPU-Bound),比如科學(xué)運(yùn)算、循環(huán)語(yǔ)句等;一種是不占用或極少占用CPU的(I/O-Bound),比如與各種外圍設(shè)備的交互,包括硬盤、串口、鍵盤、TCP網(wǎng)絡(luò)等。由于外圍設(shè)備的運(yùn)行速度很慢,CPU經(jīng)常會(huì)處于等待狀態(tài),因此,將對(duì)外圍設(shè)備的讀取、寫入、等待放到新建的線程中,以保證主線程可以立即執(zhí)行后續(xù)的操作,這樣是可以顯著提高運(yùn)行效率的。但是,如果將兩組耗用CPU的操作分放到兩個(gè)線程中“同時(shí)”執(zhí)行,并且應(yīng)用程序運(yùn)行在單核單CPU計(jì)算機(jī)上,那么并不會(huì)提高效率,因?yàn)镃PU同時(shí)只能執(zhí)行來自一個(gè)進(jìn)程的一條線程,它會(huì)為每個(gè)線程分配一小段時(shí)間(稱作時(shí)間片,通常為幾十毫秒)來模擬它們的同步運(yùn)行。CPU的線程切換也需要時(shí)間(兩毫秒左右),執(zhí)行保存、還原運(yùn)行現(xiàn)場(chǎng),掛起、繼續(xù)線程等操作。當(dāng)一個(gè)線程的時(shí)間片結(jié)束或被中斷時(shí),CPU會(huì)轉(zhuǎn)去執(zhí)行其他線程,此時(shí)稱該線程被搶占了。
??線程有以下幾個(gè)常用的屬性:

  • ManagedThreadId屬性,托管線程Id,在進(jìn)程內(nèi)唯一。
  • Name屬性,線程的名稱,默認(rèn)為空。
  • ThreadState屬性,是一個(gè)位標(biāo)記,描述了線程的當(dāng)前運(yùn)行狀態(tài)。

聯(lián)系方式

個(gè)人微信

公眾號(hào)_DotNet微說.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 多線程編程 5.1 線程基礎(chǔ) 5.1.1 如何創(chuàng)建線程 在java要?jiǎng)?chuàng)建線程,一般有==兩種方式==:1)...
    AndroidMaster閱讀 1,895評(píng)論 0 11
  • Java-Review-Note——4.多線程 標(biāo)簽: JavaStudy PS:本來是分開三篇的,后來想想還是整...
    coder_pig閱讀 1,761評(píng)論 2 17
  • 【JAVA 線程】 線程 進(jìn)程:是一個(gè)正在執(zhí)行中的程序。每一個(gè)進(jìn)程執(zhí)行都有一個(gè)執(zhí)行順序。該順序是一個(gè)執(zhí)行路徑,或者...
    Rtia閱讀 2,890評(píng)論 2 20
  • 又來到了一個(gè)老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始,來談?wù)劜?..
    tangsl閱讀 4,310評(píng)論 0 23
  • 首部的分類:通用首部,請(qǐng)求首部,響應(yīng)首部,實(shí)體首部,擴(kuò)展首部。 通用首部:客戶端和服務(wù)端都可以使用,比如Date首...
    二貨豆子閱讀 296評(píng)論 0 0

友情鏈接更多精彩內(nèi)容