天天看點

[VC]線程

是程序中的一個實體,是被系統獨立排程和分派的基本機關,線程自己不擁有系統資源,隻擁有一點在運作中必不可少的資源,但它可與同屬一個程序的其它線程共

享程序所擁有的全部資源。一個線程可以建立和撤消另一個線程,同一程序中的多個線程之間可以并發執行。由于線程之間的互相制約,緻使線程在運作中呈現出間

斷性。線程也有就緒、阻塞和運作三種基本狀态。

  線程是程式中一個單一的順序控制流程.在單個程式中同時運作多個線程完成不同的工作,稱為多線程.

  線程和程序的差別在于,子程序和父程序有不同的代碼和資料空間,而多個線程則共享資料空間,每個線程有自己的執行堆棧和程式計數器為其執行上下文.多線程主要是為了節約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

  主要方法

  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{

void run() {

  public static void

main(String[] args) {

  new Thread(new

MyThread()).start();

  一般鼓勵使用第二種方法,應為Java裡面隻允許單一繼承,但允許實作多個接口。第二個方法更加靈活。