java基礎教程案例:[13]java之執行緒?

執行緒是程式中的執行執行緒。Java 虛擬機器允許應用程式併發地執行多個執行執行緒。

每個執行緒都有一個優先順序,高優先順序執行緒的執行優先於低優先順序執行緒。每個執行緒都可以或不可以標記為一個守護程式。當某個執行緒中執行的程式碼建立一個新Thread物件時,該新執行緒的初始優先順序被設定為建立執行緒的優先順序,並且當且僅當建立執行緒是守護執行緒時,新執行緒才是守護程式。

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物件。

方法摘要

static int activeCount() 返回當前執行緒的執行緒組中活動執行緒的數目。

void checkAccess() 判定當前執行的執行緒是否有權修改該執行緒。

int countStackFrames()已過時。該呼叫的定義依賴於suspend(),但它遭到了反對。此外,該呼叫的結果從來都不是意義明確的。

static Thread currentThread() 返回對當前正在執行的執行緒物件的引用。

void destroy()已過時。該方法最初用於破壞該執行緒,但不作任何清除。它所保持的任何監視器都會保持鎖定狀態。不過,該方法決不會被實現。即使要實現,它也極有可能以suspend()方式被死鎖。如果目標執行緒被破壞時保持一個保護關鍵系統資源的鎖,則任何執行緒在任何時候都無法再次訪問該資源。如果另一個執行緒曾試圖鎖定該資源,則會出現死鎖。這類死鎖通常會證明它們自己是“凍結”的程序。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

static void dumpStack() 將當前執行緒的堆疊跟蹤列印至標準錯誤流。

static int enumerate(Thread[] tarray) 將當前執行緒的執行緒組及其子組中的每一個活動執行緒複製到指定的陣列中。

static Map getAllStackTraces() 返回所有活動執行緒的堆疊跟蹤的一個對映。

ClassLoader getContextClassLoader() 返回該執行緒的上下文 ClassLoader。

static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() 返回執行緒由於未捕獲到異常而突然終止時呼叫的預設處理程式。

long getId() 返回該執行緒的識別符號。

String getName() 返回該執行緒的名稱。

int getPriority() 返回執行緒的優先順序。

StackTraceElement[] getStackTrace() 返回一個表示該執行緒堆疊轉儲的堆疊跟蹤元素陣列。

Thread.State getState() 返回該執行緒的狀態。

ThreadGroup getThreadGroup() 返回該執行緒所屬的執行緒組。

Thread.UncaughtExceptionHandler getUncaughtExceptionHandler() 返回該執行緒由於未捕獲到異常而突然終止時呼叫的處理程式。

static boolean holdsLock(Object obj) 當且僅當當前執行緒在指定的物件上保持監視器鎖時,才返回true。

void interrupt() 中斷執行緒。

static boolean interrupted() 測試當前執行緒是否已經中斷。

boolean isAlive() 測試執行緒是否處於活動狀態。

boolean isDaemon() 測試該執行緒是否為守護執行緒。

boolean isInterrupted() 測試執行緒是否已經中斷。

void join() 等待該執行緒終止。

void join(long millis) 等待該執行緒終止的時間最長為millis毫秒。

void join(long millis,
int nanos) 等待該執行緒終止的時間最長為millis毫秒 +nanos納秒。

void resume()已過時。該方法只與suspend()一起使用,但suspend()已經遭到反對,因為它具有死鎖傾向。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

void run() 如果該執行緒是使用獨立的Runnable執行物件構造的,則呼叫該Runnable物件的run方法;否則,該方法不執行任何操作並返回。

void setContextClassLoader(ClassLoader cl) 設定該執行緒的上下文 ClassLoader。

void setDaemon(boolean on) 將該執行緒標記為守護執行緒或使用者執行緒。

static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 設定當執行緒由於未捕獲到異常而突然終止,並且沒有為該執行緒定義其他處理程式時所呼叫的預設處理程式。

void setName(String name) 改變執行緒名稱,使之與引數name相同。

void setPriority(int newPriority) 更改執行緒的優先順序。

void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 設定該執行緒由於未捕獲到異常而突然終止時呼叫的處理程式。

static void sleep(long millis) 在指定的毫秒數內讓當前正在執行的執行緒休眠(暫停執行),此操作受到系統計時器和排程程式精度和準確性的影響。

static void sleep(long millis,
int nanos) 在指定的毫秒數加指定的納秒數內讓當前正在執行的執行緒休眠(暫停執行),此操作受到系統計時器和排程程式精度和準確性的影響。

void start() 使該執行緒開始執行;Java 虛擬機器呼叫該執行緒的run方法。

void stop()已過時。該方法具有固有的不安全性。用 Thread.stop
來終止執行緒將釋放它已經鎖定的所有監視器(作為沿堆疊向上傳播的未檢查ThreadDeath異常的一個自然後果)。如果以前受這些監視器保護的任何物件都處於一種不一致的狀態,則損壞的物件將對其他執行緒可見,這有可能導致任意的行為。stop的許多使用都應由只修改某些變數以指示目標執行緒應該停止執行的程式碼來取代。目標執行緒應定期檢查該變數,並且如果該變數指示它要停止執行,則從其執行方法依次返回。如果目標執行緒等待很長時間(例如基於一個條件變數),則應使用interrupt方法來中斷該等待。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

void stop(Throwable obj)已過時。該方法具有固有的不安全性。有關詳細資訊,請參閱stop()。該方法的附加危險是它可用於生成目標執行緒未準備處理的異常(包括若沒有該方法該執行緒不太可能丟擲的已檢查的異常)。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

void suspend()已過時。該方法已經遭到反對,因為它具有固有的死鎖傾向。如果目標執行緒掛起時在保護關鍵系統資源的監視器上保持有鎖,則在目標執行緒重新開始以前任何執行緒都不能訪問該資源。如果重新開始目標執行緒的執行緒想在呼叫resume之前鎖定該監視器,則會發生死鎖。這類死鎖通常會證明自己是“凍結”的程序。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

String toString() 返回該執行緒的字串表示形式,包括執行緒名稱、優先順序和執行緒組。

static void yield() 暫停當前正在執行的執行緒物件,並執行其他執行緒。

從類 java.lang.Object繼承的方法

clone,equals,finalize,getClass,hashCode,notify,notifyAll,wait,wait,wait

欄位詳細資訊

MIN_PRIORITY

public static final intMIN_PRIORITY

執行緒可以具有的最低優先順序。

另請參見:

常量欄位值

NORM_PRIORITY

public static final intNORM_PRIORITY

分配給執行緒的預設優先順序。

另請參見:

常量欄位值

MAX_PRIORITY

public static final intMAX_PRIORITY

執行緒可以具有的最高優先順序。

另請參見:

常量欄位值

構造方法詳細資訊

Thread

publicThread()

分配新的Thread物件。這種構造方法與Thread(null, null,gname)具有相同的作用,其中gname是一個新生成的名稱。自動生成的名稱的形式為"Thread-"+n,其中的n為整數。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(Runnable target)

分配新的Thread物件。這種構造方法與Thread(null,
target,gname)具有相同的作用,其中的gname是一個新生成的名稱。自動生成的名稱的形式為“Thread-”+n,其中的n為整數。

引數:

target- 其run方法被呼叫的物件。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(ThreadGroup group,Runnable target)

分配新的Thread物件。這種構造方法與Thread(group, target,gname)具有相同的作用,其中的gname是一個新生成的名稱。自動生成的名稱的形式為"Thread-"+n,其中的n為整數。

引數:

group- 執行緒組。

target- 其run方法被呼叫的物件。

丟擲:

SecurityException-
如果當前執行緒無法在指定的執行緒組中建立執行緒。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(String name)

分配新的Thread物件。這種構造方法與Thread(null, null, name)具有相同的作用。

引數:

name- 新執行緒的名稱。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(ThreadGroup group,String name)

分配新的Thread物件。這種構造方法與Thread(group, null, name)具有相同的作用。

引數:

group- 執行緒組。

name- 新執行緒的名稱。

丟擲:

SecurityException-
如果當前執行緒無法在指定的執行緒組中建立執行緒。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(Runnable target,String name)

分配新的Thread物件。這種構造方法與Thread(null, target, name)具有相同的作用。

引數:

target- 其run方法被呼叫的物件。

name- 新執行緒的名稱。

另請參見:

Thread(ThreadGroup,
Runnable, String)

Thread

publicThread(ThreadGroup group,Runnable target,String name)

分配新的Thread物件,以便將target作為其執行物件,將指定的name作為其名稱,並作為group所引用的執行緒組的一員。

如果group為null,並且有安全管理器,則該組由安全管理器的getThreadGroup方法確定。如果group為null,並且沒有安全管理器,或安全管理器的getThreadGroup方法返回null,則該組與建立新執行緒的執行緒被設定為相同的 ThreadGroup。

如果有安全管理器,則其checkAccess方法通過 ThreadGroup 作為其引數被呼叫。

此外,當被重寫getContextClassLoader或setContextClassLoader方法的子類構造方法直接或間接呼叫時,其checkPermission方法通過RuntimePermission("enableContextClassLoaderOverride")許可權呼叫。其結果可能是
SecurityException。

如果target引數不是null,則target的run方法在啟動該執行緒時呼叫。如果 target 引數為null,則該執行緒的run方法在該執行緒啟動時呼叫。

新建立執行緒的優先順序被設定為建立該執行緒的執行緒的優先順序,即當前正在執行的執行緒的優先順序。方法setPriority可用於將優先順序更改為一個新值。

當且僅當建立新執行緒的執行緒當前被標記為守護執行緒時,新建立的執行緒才被標記為守護執行緒。方法setDaemon可用於改變執行緒是否為守護執行緒。

引數:

group- 執行緒組。

target- 其run方法被呼叫的物件。

name- 新執行緒的名稱。

丟擲:

SecurityException-
如果當前執行緒無法在指定的執行緒組中建立執行緒,或者無法重寫上下文類載入器方法。

另請參見:

Runnable.run()

,

run()

,

setDaemon(boolean)

,

setPriority(int)

,

ThreadGroup.checkAccess()

,

SecurityManager.checkAccess(java.lang.Thread)

Thread

publicThread(ThreadGroup group,Runnable target,String name,
long stackSize)

分配新的Thread物件,以便將target作為其執行物件,將指定的name作為其名稱,作為group所引用的執行緒組的一員,並具有指定的堆疊大小。

除了允許指定執行緒堆疊大小以外,這種構造方法與Thread(ThreadGroup,Runnable,String)完全一樣。堆疊大小是虛擬機器要為該執行緒堆疊分配的地址空間的近似位元組數。stackSize引數(如果有)的作用具有高度的平臺依賴性。

在某些平臺上,指定一個較高的stackSize引數值可能使執行緒在丟擲StackOverflowError之前達到較大的遞迴深度。同樣,指定一個較低的值將允許較多的執行緒併發地存在,且不會丟擲OutOfMemoryError(或其他內部錯誤)。stackSize引數的值與最大遞迴深度和併發程度之間的關係細節與平臺有關。在某些平臺上,stackSize引數的值無論如何不會起任何作用。

作為建議,可以讓虛擬機器自由處理stackSize引數。如果指定值對於平臺來說過低,則虛擬機器可能使用某些特定於平臺的最小值;如果指定值過高,則虛擬機器可能使用某些特定於平臺的最大值。同樣,虛擬機器還會視情況自由地舍入指定值(或完全忽略它)。

將stackSize引數值指定為零將使這種構造方法與Thread(ThreadGroup, Runnable,
String)構造方法具有完全相同的作用。

由於這種構造方法的行為具有平臺依賴性,因此在使用它時要非常小心。執行特定計算所必需的執行緒堆疊大小可能會因 JRE
實現的不同而不同。鑑於這種不同,仔細調整堆疊大小引數可能是必需的,而且可能要在支援應用程式執行的 JRE 實現上反覆調整。

實現注意事項:鼓勵 Java 平臺實現者文件化其stackSize parameter的實現行為。

引數:

group- 執行緒組。

target- 其run方法被呼叫的物件。

name- 新執行緒的名稱。

stackSize- 新執行緒的預期堆疊大小,為零時表示忽略該引數。

丟擲:

SecurityException-
如果當前執行緒無法在指定的執行緒組中建立執行緒。

從以下版本開始:

1.4

方法詳細資訊

currentThread

public staticThreadcurrentThread()

返回對當前正在執行的執行緒物件的引用。

返回:

當前執行的執行緒。

yield

public static voidyield()

暫停當前正在執行的執行緒物件,並執行其他執行緒。

sleep

public static voidsleep(long millis)
throwsInterruptedException

在指定的毫秒數內讓當前正在執行的執行緒休眠(暫停執行),此操作受到系統計時器和排程程式精度和準確性的影響。該執行緒不丟失任何監視器的所屬權。

引數:

millis- 以毫秒為單位的休眠時間。

丟擲:

InterruptedException- 如果任何執行緒中斷了當前執行緒。當丟擲該異常時,當前執行緒的中斷狀態被清除。

另請參見:

Object.notify()

sleep

public static voidsleep(long millis,
int nanos)
throwsInterruptedException

在指定的毫秒數加指定的納秒數內讓當前正在執行的執行緒休眠(暫停執行),此操作受到系統計時器和排程程式精度和準確性的影響。該執行緒不丟失任何監視器的所屬權。

引數:

millis- 以毫秒為單位的休眠時間。

nanos- 要休眠的另外 0-999999 納秒。

丟擲:

IllegalArgumentException- 如果 millis 值為負或 nanos 值不在 0-999999 範圍內。

InterruptedException- 如果任何執行緒中斷了當前執行緒。當丟擲該異常時,當前執行緒的中斷狀態被清除。

另請參見:

Object.notify()

start

public voidstart()

使該執行緒開始執行;Java 虛擬機器呼叫該執行緒的run方法。

結果是兩個執行緒併發地執行;當前執行緒(從呼叫返回給start方法)和另一個執行緒(執行其run方法)。

多次啟動一個執行緒是非法的。特別是當執行緒已經結束執行後,不能再重新啟動。

丟擲:

IllegalThreadStateException- 如果執行緒已經啟動。

另請參見:

run()

,

stop()

run

public voidrun()

如果該執行緒是使用獨立的Runnable執行物件構造的,則呼叫該Runnable物件的run方法;否則,該方法不執行任何操作並返回。

Thread的子類應該重寫該方法。

指定者:

介面Runnable中的run

另請參見:

start()

,

stop()

,

Thread(ThreadGroup,
Runnable, String)

stop

@Deprecatedpublic final voidstop()

已過時。該方法具有固有的不安全性。用 Thread.stop 來終止執行緒將釋放它已經鎖定的所有監視器(作為沿堆疊向上傳播的未檢查ThreadDeath異常的一個自然後果)。如果以前受這些監視器保護的任何物件都處於一種不一致的狀態,則損壞的物件將對其他執行緒可見,這有可能導致任意的行為。stop的許多使用都應由只修改某些變數以指示目標執行緒應該停止執行的程式碼來取代。目標執行緒應定期檢查該變數,並且如果該變數指示它要停止執行,則從其執行方法依次返回。如果目標執行緒等待很長時間(例如基於一個條件變數),則應使用interrupt方法來中斷該等待。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

強迫執行緒停止執行。

如果安裝了安全管理器,則以this作為其引數呼叫checkAccess方法。這可能引發SecurityException(在當前執行緒中)。

如果該執行緒不同於當前執行緒(即當前執行緒試圖終止除它本身以外的某一執行緒),則安全管理器的checkPermission方法(帶有RuntimePermission("stopThread")引數)也會被呼叫。這會再次丟擲SecurityException(在當前執行緒中)。

無論該執行緒在做些什麼,它所代表的執行緒都被迫異常停止,並丟擲一個新建立的ThreadDeath物件,作為異常。

停止一個尚未啟動的執行緒是允許的。如果最後啟動了該執行緒,它會立即終止。

應用程式通常不應試圖捕獲ThreadDeath,除非它必須執行某些異常的清除操作(注意,丟擲ThreadDeath將導致try語句的finally子句線上程正式終止前執行)。如果catch子句捕獲了一個ThreadDeath物件,則重新丟擲該物件很重要,因為這樣該執行緒才會真正終止。

對其他未捕獲的異常作出反應的頂級錯誤處理程式不會列印輸出訊息,或者另外通知應用程式未捕獲到的異常是否為ThreadDeath的一個例項。

丟擲:

SecurityException-
如果當前執行緒不能修改該執行緒。

另請參見:

interrupt()

,

checkAccess()

,

run()

,

start()

,

ThreadDeath

,

ThreadGroup.uncaughtException(Thread,Throwable)

,

SecurityManager.checkAccess(Thread)

,

SecurityManager.checkPermission(java.security.Permission)

stop

@Deprecatedpublic final voidstop(Throwable obj)

已過時。該方法具有固有的不安全性。有關詳細資訊,請參閱stop()。該方法的附加危險是它可用於生成目標執行緒未準備處理的異常(包括若沒有該方法該執行緒不太可能丟擲的已檢查的異常)。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

強迫執行緒停止執行。

如果安裝了安全管理器,則呼叫該執行緒的checkAccess方法,這可能引發SecurityException(在當前執行緒中)。

如果該執行緒不同於當前執行緒(即當前執行緒試圖終止除它本身以外的某一執行緒),或者obj不是ThreadDeath的一個例項,則安全管理器的checkPermission方法(帶有RuntimePermission("stopThread")引數)也會被呼叫。此外,這可能丟擲SecurityException(在當前執行緒中)。

如果引數obj為 null,則丟擲NullPointerException(在當前執行緒中)。

無論該執行緒在做些什麼,它所代表的執行緒都被迫異常停止,並丟擲Throwable物件obj,作為一個異常。這是一種不正常的操作,通常情況下,應使用不帶任何引數的stop方法。

停止一個尚未啟動的執行緒是允許的。如果最後啟動了該執行緒,它會立即終止。

引數:

obj- 要丟擲的可丟擲物件。

丟擲:

SecurityException-
如果當前執行緒不能修改該執行緒。

NullPointerException- 如果 obj 為null。

另請參見:

interrupt()

,

checkAccess()

,

run()

,

start()

,

stop()

,

SecurityManager.checkAccess(Thread)

,

SecurityManager.checkPermission(java.security.Permission)

interrupt

public voidinterrupt()

中斷執行緒。

如果當前執行緒沒有中斷它自己(這在任何情況下都是允許的),則該執行緒的checkAccess方法就會被呼叫,這可能丟擲SecurityException。

如果執行緒在呼叫Object類的wait()、wait(long)或wait(long,
int)方法,或者該類的join()、join(long)、join(long,
int)、sleep(long)或sleep(long,
int)方法過程中受阻,則其中斷狀態將被清除,它還將收到一個InterruptedException。

如果該執行緒在可中斷的通道上的
I/O 操作中受阻,則該通道將被關閉,該執行緒的中斷狀態將被設定並且該執行緒將收到一個ClosedByInterruptException。

如果該執行緒在一個Selector中受阻,則該執行緒的中斷狀態將被設定,它將立即從選擇操作返回,並可能帶有一個非零值,就好像呼叫了選擇器的wakeup方法一樣。

如果以前的條件都沒有儲存,則該執行緒的中斷狀態將被設定。

中斷一個不處於活動狀態的執行緒不需要任何作用。

丟擲:

SecurityException-
如果當前執行緒無法修改該執行緒

interrupted

public static booleaninterrupted()

測試當前執行緒是否已經中斷。執行緒的中斷狀態由該方法清除。換句話說,如果連續兩次呼叫該方法,則第二次呼叫將返回
false(在第一次呼叫已清除了其中斷狀態之後,且第二次呼叫檢驗完中斷狀態前,當前執行緒再次中斷的情況除外)。

執行緒中斷被忽略,因為在中斷時不處於活動狀態的執行緒將由此返回 false 的方法反映出來。

返回:

如果當前執行緒已經中斷,則返回true;否則返回false。

另請參見:

isInterrupted()

isInterrupted

public booleanisInterrupted()

測試執行緒是否已經中斷。執行緒的中斷狀態不受該方法的影響。

執行緒中斷被忽略,因為在中斷時不處於活動狀態的執行緒將由此返回 false 的方法反映出來。

返回:

如果該執行緒已經中斷,則返回true;否則返回false。

另請參見:

interrupted()

destroy

@Deprecatedpublic voiddestroy()

已過時。該方法最初用於破壞該執行緒,但不作任何清除。它所保持的任何監視器都會保持鎖定狀態。不過,該方法決不會被實現。即使要實現,它也極有可能以suspend()方式被死鎖。如果目標執行緒被破壞時保持一個保護關鍵系統資源的鎖,則任何執行緒在任何時候都無法再次訪問該資源。如果另一個執行緒曾試圖鎖定該資源,則會出現死鎖。這類死鎖通常會證明它們自己是“凍結”的程序。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

丟擲

NoSuchMethodError

丟擲:

NoSuchMethodError-
始終

isAlive

public final booleanisAlive()

測試執行緒是否處於活動狀態。如果執行緒已經啟動且尚未終止,則為活動狀態。

返回:

如果該執行緒處於活動狀態,則返回true;否則返回false。

suspend

@Deprecatedpublic final voidsuspend()

已過時。該方法已經遭到反對,因為它具有固有的死鎖傾向。如果目標執行緒掛起時在保護關鍵系統資源的監視器上保持有鎖,則在目標執行緒重新開始以前任何執行緒都不能訪問該資源。如果重新開始目標執行緒的執行緒想在呼叫resume之前鎖定該監視器,則會發生死鎖。這類死鎖通常會證明自己是“凍結”的程序。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

掛起執行緒。

首先,呼叫執行緒的checkAccess方法,且不帶任何引數。這可能丟擲SecurityException(在當前執行緒中)。

如果執行緒處於活動狀態則被掛起,且不再有進一步的活動,除非重新開始。

丟擲:

SecurityException-
如果當前執行緒不能修改該執行緒。

另請參見:

checkAccess()

resume

@Deprecatedpublic final voidresume()

已過時。該方法只與suspend()一起使用,但suspend()已經遭到反對,因為它具有死鎖傾向。有關更多資訊,請參閱為何不贊成使用
Thread.stop、Thread.suspend 和 Thread.resume?。

重新開始掛起的程序。

首先,呼叫執行緒的checkAccess方法,且不帶任何引數。這可能丟擲SecurityException(在當前執行緒中)。

如果執行緒處於活動狀態但被掛起,則它會在執行過程中重新開始並允許繼續活動。

丟擲:

SecurityException-
如果當前執行緒不能修改該執行緒。

另請參見:

checkAccess()

,

suspend()

setPriority

public final voidsetPriority(int newPriority)

更改執行緒的優先順序。

首先呼叫執行緒的checkAccess方法,且不帶任何引數。這可能丟擲SecurityException。

在其他情況下,執行緒優先順序被設定為指定的newPriority和該執行緒的執行緒組的最大允許優先順序相比較小的一個。

引數:

newPriority- 要為執行緒設定的優先順序

丟擲:

IllegalArgumentException- 如果優先順序不在MIN_PRIORITY到MAX_PRIORITY範圍內。

SecurityException-
如果當前執行緒無法修改該執行緒。

另請參見:

getPriority()

,

checkAccess()

,

getThreadGroup()

,

MAX_PRIORITY

,

MIN_PRIORITY

,

ThreadGroup.getMaxPriority()

getPriority

public final intgetPriority()

返回執行緒的優先順序。

返回:

該執行緒的優先順序。

另請參見:

setPriority(int)

setName

public final voidsetName(String name)

改變執行緒名稱,使之與引數name相同。

首先呼叫執行緒的checkAccess方法,且不帶任何引數。這可能丟擲SecurityException。

引數:

name- 該執行緒的新名稱。

丟擲:

SecurityException-
如果當前執行緒不能修改該執行緒。

另請參見:

getName()

,

checkAccess()

getName

public finalStringgetName()

返回該執行緒的名稱。

返回:

該執行緒的名稱。

另請參見:

setName(String)

getThreadGroup

public finalThreadGroupgetThreadGroup()

返回該執行緒所屬的執行緒組。 如果該執行緒已經終止(停止執行),該方法則返回 null。

java基礎教程案例 (共54篇) 上一篇:java之內部類 下一篇:

物件, 引數, 執行緒, 該線,
相關問題答案