獲取執行緒資訊
thread提供了獲取執行緒資訊的相關方法:
long getid():返回該執行緒的識別符號
string getname():返回該執行緒的名稱
int getpriority();返回執行緒的優先順序
thread.state getstate():獲取執行緒的狀態
boolean isalive():測試執行緒是否處於活動狀態
boolean isdaemon():測試執行緒是否為守護執行緒
boolean isinterrupted();測試執行緒是否已經中斷
thread main = thread.currentthread();
// 獲取執行緒名字
system.out.println(main.getname()); // main
// 獲取執行緒的唯一標識
long id = main.getid();
system.out.println(id); // 1
int priority = main.getpriority();
system.out.println(priority); // 5
boolean isalive = main.isalive();
system.out.println(isalive); // true
// 獲取該執行緒是否為守護執行緒
boolean isdaemon = main.isdaemon(); // false
system.out.println(isdaemon);
// 執行緒是否被中斷
boolean isinterrupted = main.isinterrupted();
system.out.println(isinterrupted); // false
執行緒優先順序
執行緒的切換是由執行緒排程控制的,我們無法通過**來干涉,但是我們通過提高執行緒的優先順序來最大程度的改善執行緒獲取時間片的機率。
執行緒的優先順序被劃分為10級,值分別為1-10,其中1最低,10最高。執行緒提供了3個常量來表示最低,最高,以及預設優先順序:
thread.min_priority
thread.max_priority
thread.norm_priority
void setpriority(int priority):設定執行緒的優先順序。
守護執行緒
守護執行緒與普通執行緒在表現上沒有什麼區別,我們只需要通過thread提供的方法來設定即可:
void setdaemon(boolean)
當引數為true時該執行緒為守護執行緒。
守護執行緒的特點是,當程序中只剩下守護執行緒時,所有守護執行緒強制終止。
gc就是執行在乙個守護執行緒上的。
public class daemon1 catch(interruptedexception e)
}system.out.println("rose:啊啊啊啊啊aaaaaaaaa");
system.out.println("噗通!");}};
thread jack=new thread() catch(interruptedexception e)
jack.setdaemon(true);
rose.start();
jack.start();
while(true)
}//守護執行緒裡的finally**塊不一定執行
public class daemonsdontrunfinally
}class adaemon implements runnablecatch(interruptedexception e) finally
}sleep方法
thread的靜態方法sleep用於使當前執行緒進入阻塞狀態:
--static void sleep(long ms)
該方法會使當前執行緒進入阻塞狀態指定毫秒,當阻塞指定毫秒後,當前執行緒會重寫進入runnable狀態,等待分配時間片。
該方法宣告丟擲乙個interruptexception。所以在使用該方法需要捕獲這個異常。
public class sleepd catch (interruptedexception e) }}
yield方法
thread的靜態方法yield:
-static void yield()
該方法用於使當前執行緒主動讓片出當次cpu時間片回到runnable狀態,等待分配時間片.
join方法
thread的方法join:
-void join()該方法用於等待當前執行緒結束。
該方法宣告丟擲interruptexception
public static boolean isfinish;
public static void main(string args) catch (interruptedexception e)
}isfinish = true;}};
download.start();
thread show=new thread() catch (interruptedexception e)
if(!isfinish)
system.out.println("show:顯示成功");}};
show.start();}}
Linux執行緒API的實際操作筆記
第一節 執行緒的建立 1 要包含標頭檔案 include 2 宣告用來存放執行緒id的變數 pthread t ptid 3 設計執行緒處理函式 格式為 type funcname type argv 4 建立執行緒 使用函式pthread create ptid,null 使用預設執行緒屬性 vo...
Delphi 建立執行緒(API)
下面這個程式介紹了我們在使用執行緒及未使用執行緒二種情況下,執行該程式的反 應。當點usedthread按鈕時,則建立乙個執行緒,這時我們可以在程式進行計算的同 時,改變窗體的尺寸及移動它。當按下nousedthread按鈕時,不建立執行緒,我們會發 現在程式沒有計算完之前根本不能做其它任何事情!u...
ARM linux執行緒相關API
1.執行緒的建立和退出 執行緒的建立是用下面的幾個函式來實現的.include int pthread create pthread t thread,pthread attr t attr,void start routine void void arg void pthread exit voi...