㈠ 線程是什麼意思
先看看專業的解釋是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。
線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
線程和進程的區別在於,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器為其執行上下文.多線程主要是為了節約CPU時間,發揮利用,根據具體情況而定. 線程的運行中需要使用計算機的內存資源和CPU
.....我用例子給你說下比如你們學校大掃除,分工到每一個班級你們班級就叫做進程,負責的任務是大掃除,就是主線程然後你們班有3個小組,第一組掃地,第二組拖地,第三組擦窗戶那麼這三組分別做了三種不同的事情,可以看作三個線程也就是說線程隸屬於進程是一個包含被包含的關系每個線程的作用不一樣就上上面我說的三個線程,一個作用是掃地,一個是拖地,一個擦窗戶理解起來也不是很難
㈡ 什麼是線程
線程是指程序的一個指令執行序列,WIN32 平台支持多線程程序,允許程序中存在多個線程。 在單 CPU 系統中,系
統把 CPU 的時間片按照調度演算法分配給各個線程,因此各線程實際上是分時執行的,在多 CPU 的 Windows NT 系統中, 同一
個程序的不同線程可以被分配到不同的 CPU 上去執行。由於一個程序的各線程是在相同的地址空間運行的,因此設及到了如何
共享內存, 如何通信等問題,這樣便需要處理各線程之間的同步問題,這是多線程編程中的一個難點。7
㈢ 什麼是線程
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。
就是你看見任務管理器的有一個瀏覽器正在運行,但是他的進程一般是一個網頁一個進程 你可以右鍵切換到進程查看。
㈣ 什麼是線程 線程的特點
線程的介紹
線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。就緒狀態是指線程具備運行的所有條件,邏輯上可以運行,在等待處理機;運行狀態是指線程佔有處理機正在運行;阻塞狀態是指線程在等待一個事件(如某個信號量),邏輯上不可執行。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。
線程是程序中一個單一的順序控制流程。進程內一個相對獨立的、可調度的執行單元,是系統獨立調度和分派CPU的基本單位指運行中的程序的調度單位。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
線程的特點
在多線程OS中,通常是在一個進程中包括多個線程,每個線程都是作為利用CPU的基本單位,是花費最小開銷的實體。線程具有以下屬性。
1)輕型實體
線程中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立運行的資源。
線程的實體包括程序、數據和TCB。線程是動態概念,它的動態特性由線程式控制制塊TCB(Thread Control Block)描述。TCB包括以下信息:
(1)線程狀態。
(2)當線程不運行時,被保存的現場資源。
(3)一組執行堆棧。
(4)存放每個線程的局部變數主存區。
(5)訪問同一個進程中的主存和其它資源。
用於指示被執行指令序列的程序計數器、保留局部變數、少數狀態參數和返回地址等的一組寄存器和堆棧。
2)獨立調度和分派的基本單位。
在多線程OS中,線程是能獨立運行的基本單位,因而也是獨立調度和分派的基本單位。由於線程很「輕」,故線程的切換非常迅速且開銷小(在同一進程中的)。
3)可並發執行。
在一個進程中的多個線程之間,可以並發執行,甚至允許在一個進程中所有線程都能並發執行;同樣,不同進程中的線程也能並發執行,充分利用和發揮了處理機與外圍設備並行工作的能力。
4)共享進程資源。
在同一進程中的各個線程,都可以共享該進程所擁有的資源,這首先表現在:所有線程都具有相同的地址空間(進程的地址空間),這意味著,線程可以訪問該地址空間的每一個虛地址;此外,還可以訪問進程所擁有的已打開文件、定時器、信號量機構等。由於同一個進程內的線程共享內存和文件,所以線程之間互相通信不必調用內核。
線程與進程比較
進程是資源分配的基本單位。所有與該進程有關的資源,都被記錄在進程式控制制塊PCB中。以表示該進程擁有這些資源或正在使用它們。
另外,進程也是搶占處理機的調度單位,它擁有一個完整的虛擬地址空間。當進程發生調度時,不同的進程擁有不同的虛擬地址空間,而同一進程內的不同線程共享同一地址空間。
與進程相對應,線程與資源分配無關,它屬於某一個進程,並與進程內的其他線程一起共享進程的資源。
線程只由相關堆棧(系統棧或用戶棧)寄存器和線程式控制製表TCB組成。寄存器可被用來存儲線程內的局部變數,但不能存儲其他線程的相關變數。
通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位。由於線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間並發執行的程度,從而顯著提高系統資源的利用率和吞吐量。因而近年來推出的通用操作系統都引入了線程,以便進一步提高系統的並發性,並把它視為現代操作系統的一個重要指標。
線程與進程的區別可以歸納為以下4點:
1)地址空間和其它資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。
2)通信:進程間通信IPC,線程間可以直接讀寫進程數據段(如全局變數)來進行通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。
3)調度和切換:線程上下文切換比進程上下文切換要快得多。
4)在多線程OS中,進程不是一個可執行的實體。
㈤ 什麼是線程
是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。
線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
線程和進程的區別在於,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器為其執行上下文.多線程主要是為了節約CPU時間,發揮利用,根據具體情況而定. 線程的運行中需要使用計算機的內存資源和CPU
線程的周期
新建 就緒 運行 阻塞 死亡
線程調度與優先順序
有線程進入了就緒狀態,需要有線程調度程序來決定何時執行,根據優先順序來調度.
線程組
每個線程都是一個線程組的一個成員,線程組把多個線程集成一個對象,通過線程組可以同時對其中的多個線程進行操作.在生成線程時必須將線程放在指定的線程組,也可以放在預設的線程組中,預設的就是生成該線程的線程所在的線程組.一旦一個線程加入了某個線程組,不能被移出這個組.
守護線程
是特殊的線程,一般用於在後台為其他線程提供服務.
isDaemon():判斷一個線程是否為守護線程.
set Daemon():設置一個線程為守護線程.
Thread類和Runnable介面
Thread類
類Thread在包java.lang中定義,它的構造方法如下:
public Thread();
public Thread(Runnable target);
public Thread(Runnable target,String name);
public Thread(String name);
public Thread(ThreadGroup group,Runnable target);
public Thread(ThreadGroup group, String name);
主要方法
isActive() 判斷是否處於執行狀態
Suspend() 暫停執行
reSume 恢復執行
start() 開始執行
Stop() 停止執行
sleep() 睡眠
run() 程序體
yield() 向其他線程退讓運行權
線程優先順序
Public statuc final int MAX_PRIORITY最高優先順序,10
Public statuc final int MIN_PRIORITY最低優先順序,1
Public statuc final int NORM_PRIORITY普通優先順序,5
Runnable介面
Runnable介面中只定義了一個方法run()作為線程體,
void run()
Java的線程是通過java.lang.Thread類來實現的。
VM啟動時會有一個由主方法(public static void main(){})所定義的線程。
可以通過創建Thread的實例來創建新的線程。
每個線程都是通過某個特定的Thread對象所對應的方法run()來完成其操作的,方法run()稱為線程體。
通過調用Thread類的start()方法來啟動一個線程
Java裡面實現多線程,有2個方法
1 繼承 Thread類,比如
class MyThread extends Thread {
public void run() {
// 這里寫上線程的內容
}
public static void main(String[] args) {
// 使用這個方法啟動一個線程
new MyThread().start();
}
}
2 實現 Runnable介面
class MyThread implements Runnable{
public void run() {
// 這里寫上線程的內容
}
public static void main(String[] args) {
// 使用這個方法啟動一個線程
new Thread(new MyThread()).start();
}
}
一般鼓勵使用第二種方法,應為Java裡面只允許單一繼承,但允許實現多個介面。第二個方法更加靈活。
㈥ 什麼是線程有什麼用 講得通俗點
1、線程的定義
線程,有時被稱為輕量進程(Lightweight Process,LWP),是程序執行流的最小單元。
線程,在網路或多用戶環境下,一個伺服器通常需要接收大量且不確定數量用戶的並發請求,為每一個請求都創建一個進程顯然是行不通的,——無論是從系統資源開銷方面或是響應用戶請求的效率方面來看。因此,操作系統中線程的概念便被引進了。
線程,是進程的一部分,一個沒有線程的進程可以被看作是單線程的。線程有時又被稱為輕權進程或輕量級進程,也是 CPU 調度的一個基本單位。
2、線程的作用:
線程的作用很多,舉個最為典型的例子:
當需要在網路上放一個服務端,一個客戶端訪問時,就會新建一個線程處理這個客戶端的事務,這樣的話只要不斷新建線程就可以處理多個用戶的請求了。
(6)線程是什麼擴展閱讀
線程的五種狀態:
1、新生狀態(New)
當一個線程的實例被創建即使用new關鍵字和Thread類或其子類創建一個線程對象後,此時該線程處於新生狀態。 此時線程不是活著的(not alive);
2、就緒狀態(Runnable)
通過調用線程實例的start()方法來啟動線程使線程進入就緒狀態;但還沒有被分配到CPU,處於線程就緒隊列;此時線程是活著的(alive)。
3、運行狀態(Running)
一旦獲取CPU,線程就進入運行狀態,線程的run()方法才開始被執行,如果在給定的時間內沒有執行結束,就會被系統給換下來回到線程的就緒狀態,此時線程是活著的(alive)。
4、阻塞狀態(Blocked)
通過調用join()、sleep()、wait()或者資源被暫用使線程處於阻塞狀態,此時線程是活著的(alive)。
5、死亡狀態(Dead)
當一個線程的run()方法運行完畢或被中斷或被異常退出,該線程到達死亡狀態。處於Dead狀態調用start()方法,會出現異常。