Thread 類是java中的線程類,提供給用戶用於創建、操作線程、獲取線程的信息的類。是java線程一切的基礎,掌握這個類是非常必須的,先來看一下它的API;
1、字段摘要
static int MAX_PRIORITY :線程可以具有的最高優先級。
static int MIN_PRIORITY :線程可以具有的最低優先級。
static int NORM_PRIORITY :分配給線程的默認優先級。
2、構造方法摘要
Thread() :分配新的 Thread 對象。
Thread(Runnable target) :分配新的 Thread 對象。
Thread(Runnable target, String name) : 分配新的 Thread 對象。
Thread(String name) :分配新的 Thread 對象。參數是線程名稱
Thread(ThreadGroup group, Runnable target): 分配新的 Thread 對象。
Thread(ThreadGroup group, Runnable target, String name) :
分配新的 Thread 對象,以便將 target 作為其運行對象,將指定的 name 作為其名稱,並作為 group 所引用的線程組的一員。
Thread(ThreadGroup group, Runnable target, String name, long stackSize):
分配新的 Thread 對象,以便將 target 作為其運行對象,將指定的 name 作為其名稱,作為 group 所引用的線程組的一員,並具有指定的堆棧大小。
Thread(ThreadGroup group, String name) :分配新的 Thread 對象。
注意:
線程組(ThreadGroup )已經算是過時的,被拋棄的了,所以不需要去研究線程組,僅僅知道有這個存在就可以了。按照《java編程思想》的說法,線程組一次不成功的嘗試
3、方法摘要
3.1、靜態方法
static Thread currentThread(): 返回對當前正在執行的線程對象的引用。
static int activeCount():返回當前線程的線程組中活動線程的數目。
static boolean interrupted(): 測試當前線程是否已經中斷。
static void sleep(long millis): 在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行),此操作受到系統計時器和調度程序精度和准確性的影響。
static void sleep(long millis, int nanos): 在指定的毫秒數加指定的納秒數內讓當前正在執行的線程休眠(暫停執行),此操作受到系統計時器和調度程序精度和准確性的影響。
static void yield(): 暫停當前正在執行的線程對象,並執行其他線程。
static boolean holdsLock(Object obj):當且僅當當前線程在指定的對象上保持監視器鎖時,才返回 true。
static void dumpStack():將當前線程的堆棧跟蹤打印至標准錯誤流。
static int enumerate(Thread[] tarray):將當前線程的線程組及其子組中的每一個活動線程復制到指定的數組中。
static Map< Thread,StackTraceElement[]> getAllStackTraces():返回所有活動線程的堆棧跟蹤的一個映射。
static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler():返回線程由於未捕獲到異常而突然終止時調用的默認處理程序。
static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
設置當線程由於未捕獲到異常而突然終止,並且沒有為該線程定義其他處理程序時所調用的默認處理程序。
3.2、獲取線程的信息
long getId(): 返回該線程的唯一標識符。
String getName():返回該線程的名稱。
int getPriority(): 返回線程的優先級。
Thread.State getState(): 返回該線程的狀態。
ThreadGroup getThreadGroup():返回該線程所屬的線程組。
ClassLoader getContextClassLoader():返回該線程的上下文 ClassLoader。
StackTraceElement[] getStackTrace():返回一個表示該線程堆棧轉儲的堆棧跟蹤元素數組。
Thread.UncaughtExceptionHandler getUncaughtExceptionHandler():返回該線程由於未捕獲到異常而突然終止時調用的處理程序。
3.3、線程的其他操作
void checkAccess():判定當前運行的線程是否有權修改該線程。
void interrupt(): 中斷線程。
boolean isInterrupted(): 測試線程是否已經中斷。
boolean isAlive(): 測試線程是否處於活動狀態。
boolean isDaemon(): 測試該線程是否為守護線程。即后台線程
void setName(String name):改變線程名稱,使之與參數 name 相同。
void setPriority(int newPriority): 更改線程的優先級。
void setDaemon(boolean on): 將該線程標記為守護線程或用戶線程。又叫后台線程(是后台提供一種通用的服務線程)
void setContextClassLoader(ClassLoader cl):設置該線程的上下文 ClassLoader。
void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh):設置該線程由於未捕獲到異常而突然終止時調用的處理程序。
void join(): 等待該線程終止。
void join(long millis): 等待該線程終止的時間最長為 millis 毫秒。
void join(long millis, int nanos):等待該線程終止的時間最長為 millis 毫秒 + nanos 納秒。
void start(): 使該線程開始執行;Java 虛擬機調用該線程的 run 方法。
String toString():返回該線程的字符串表示形式,包括線程名稱、優先級和線程組。
