線程:一個(gè)獨(dú)立的運(yùn)行單位
31 號(hào)學(xué)習(xí)了線程,在此之前我編寫的所有 Java 程序都只有一個(gè)主線程,而線程的加入可以讓程序在主線程下加入分線程,讓程序具備同時(shí)進(jìn)行多項(xiàng)工作的可能
在 多線程 OS 中,通常是在一個(gè) 進(jìn)程 中包括多個(gè)線程,每個(gè)線程都是作為利用 CPU 的基本單位,是花費(fèi)最小開銷的實(shí)體。線程具有以下屬性。
1 )輕型實(shí)體
線程中的實(shí)體基本上不擁有 系統(tǒng)資源 ,只是有一點(diǎn)必不可少的、能保證獨(dú)立 運(yùn)行 的資源,比如,在每個(gè)線程中都應(yīng)具有一個(gè)用于控制線程運(yùn)行的 線程控制塊 TCB ,用于指示被執(zhí)行指令序列的 程序計(jì)數(shù)器 、保留 局部變量 、少數(shù)狀態(tài)參數(shù)和 返回地址 等的一組 寄存器 和 堆棧 。
2 )獨(dú)立調(diào)度和分派的基本單位。
在多線程 OS 中,線程是能獨(dú)立 運(yùn)行 的基本單位,因而也是獨(dú)立調(diào)度和分派的基本單位。由于線程很 “ 輕 ” ,故線程的切換非常迅速且開銷小(在同一 進(jìn)程 中的)。
3 )可并發(fā)執(zhí)行。
在一個(gè) 進(jìn)程 中的多個(gè)線程之間,可以并發(fā)執(zhí)行,甚至允許在一個(gè)進(jìn)程中所有線程都能并發(fā)執(zhí)行;同樣,不同進(jìn)程中的線程也能并發(fā)執(zhí)行,充分利用和發(fā)揮了 處理機(jī) 與外圍設(shè)備并行工作的能力。
4 )共享 進(jìn)程 資源。
在同一 進(jìn)程 中的各個(gè)線程,都可以共享該進(jìn)程所擁有的資源,這首先表現(xiàn)在:所有線程都具有相同的 地址空間 (進(jìn)程的地址空間),這意味著,線程可以訪問(wèn)該地址空間的每一個(gè)虛地址;此外,還可以訪問(wèn)進(jìn)程所擁有的已打開 文件 、定時(shí)器、 信號(hào)量 機(jī)構(gòu)等。由于同一個(gè) 進(jìn)程 內(nèi)的線程 共享內(nèi)存 和 文件 ,所以線程之間互相通信不必調(diào)用 內(nèi)核 。
?
?
這便是最簡(jiǎn)單的一個(gè)線程程序了,主程序下只有一個(gè)線程
?
而這樣就可以創(chuàng)建 5 個(gè)線程
而線程遠(yuǎn)不止這一種創(chuàng)建方法,還有通過(guò)內(nèi)部類,通過(guò) Runable 接口創(chuàng)建線程,通過(guò) Timertask 創(chuàng)建等
其中Timertask提供了幾種方法特別好用,比如scherule方法,他可以讓線程在程序啟動(dòng)后n毫秒后啟動(dòng)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
