多執行緒 Thread

2022-01-16 10:19:29 字數 2136 閱讀 8322

static void main(string args)

;t.start();

console.writeline("主線程繼續執行!");

//主線程結束,後台執行緒會自動結束,不管有沒有執行完成

thread.sleep(1500);

console.writeline("主線程結束");

console.readkey();

}static void run()

輸出結果:

!(從上面我們可以看出主線程沒有等待執行緒方法執行結束,而是繼續執行。

在這裡我要補充的一點是如果把上面**中的休眠去除會導致產生的結果不一樣,這個問題是因為執行緒執行是無序的。

currentculture:獲取或設定當前執行緒的區域性。(這個暫時沒研究)

currentthread:獲取當前正在執行的執行緒。(即在當前執行緒內要獲取所執行的執行緒,返回的是當前執行執行緒,配合其他屬性來獲取資料)

isalive:獲取乙個值,該值指示當前執行緒的執行狀態。(返回bool型別,如果此執行緒已啟動並且尚未正常終止或中止返回true,否則為false)

isbackground:下面會特殊說明一下。

managedthreadid:獲取當前託管執行緒的唯一識別符號。(當前執行緒的id,返回值為int型別,代表當前執行緒號,配合currentthread使用)

name:獲取或設定執行緒的名稱。(自定義給執行緒設定乙個標識名稱,配合currentthread使用)

threadstate:獲取乙個值,該值包含當前執行緒的狀態。(返回當前執行緒的狀態,列舉型別)

priority:獲取或設定指示執行緒的排程優先順序的值。

# thread中的前台後台:

在建立thread中我們可以選中設定為前台執行緒或者後台執行緒(預設為前台程序):

isbackground 屬性:

官方解釋 :獲取或設定乙個值,該值指示某個執行緒是否為後台執行緒。

自我理解:就是設定乙個true或者false,當為true時則表示為後台執行緒,當為false時為前台執行緒。

在這裡不得不提的是前台執行緒和後台執行緒存在的差別,應用程式必須執行完所有的前台執行緒才可以退出;而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會自動結束。即當設定為false時即使使用者關閉當前主程式,程序不一定關閉,因為執行緒是寄託在程序上的,前台執行緒未退出,當前程序就不會終止。(在資源管理器中仍可以看到程序)

我們使用thread建立執行緒後,我們需要對執行緒進行控制。

1、 使用start()方法使執行緒處於running狀態,執行緒開始執行。

2、 使用join()方法使執行緒處於waitsleepjoin狀態,在繼續執行標準的 com 和 sendmessage 訊息幫浦處理期間,阻塞呼叫執行緒,直到某個執行緒終止或經過了指定時 間為止。

3、 使用sleep()方法,也會使執行緒處於waitsleepjoin狀態,在經歷sleep()方法定義的時間段後,執行緒就會被再次喚醒。、

4、 使用abort()方法,會使執行緒處於resetabort()狀態,執行緒在接到這個命令的時候,會丟擲乙個thradabordexception型別的異常。

在上面的方法基礎上我們修改一下**來看結果:

static void main(string args)

", t.threadstate);

console.writeline("主線程繼續執行!");

t.join(100);

console.writeline("newthread state:", t.threadstate);

//主線程結束,後台執行緒會自動結束,不管有沒有執行完成

t.abort();

console.writeline("主線程結束");

console.readkey();

}static void run()

輸出結果:

上面也說了在c#中線程方法傳遞資料可以直接呼叫,下面我們就在上面方法的地方修改一下即可:

t.start(100):在啟動執行緒的時候把需要的引數傳遞進去。

console.writeline("這是傳遞資料",nub):最後列印一下。

直接上結果結束此文:

!(

多執行緒 Thread

如果從另外乙個執行緒操作windows窗體上的控制項,就會與主線程產生競爭,造成不可預料的後果,甚至死鎖。因此,windows gui程式設計有乙個規則 只能通過建立控制項的執行緒來操作控制項的資料!實現方法 要從執行緒外操作windows控制項,那麼就要使用invoke或begininvoke方法...

Thread 多執行緒

import threading 首先匯入threading 模組,這是使用多執行緒的前提。threads t1 threading.thread target music,args u 愛情買賣 建立了threads陣列,建立執行緒t1,使用threading.thread 方法,在這個方法中呼叫...

python 多執行緒thread

python通過thread模組支援多執行緒,語法也很簡潔,現在通過乙個例項來看一下python中的多執行緒 import thread import time 保證只額外啟動乙個執行緒 isrunning false 啟動的時間控制,測試時間是23點44分,所以定的是這個時間,可以用於指定定時任務...