?1、開啟一個新線程的方法,歸結起來不外乎有兩種:
2、一個線程的生命周期:每個線程的生命周期(lifecycle)一共有六個狀態(state),這六個狀態用枚舉類型Thread.State的六個枚舉常量來表示。分別是:
3、線程優先級:線程可以有不同優先級,Thread定義了三個優先級常量:
public?final?static?int?MIN_PRIORITY?=?1;?//最小優先級
public?final?static?int?NORM_PRIORITY?=?5;?//默認的優先級
public?final?static?int?MAX_PRIORITY?=?10;?//最大優先級
一個線程的優先級可以是1到10中任何一個整數(包括1和10).方法
void setPriority(int newPriority) 可以用來設置線程有限級。關于優先級需要注意的是,調度器總是選擇優先級最高的線程來執行,但是java的線程優先級是和操作系統相關的,例如windows XP系統有7個優先級,java中的某些優先級會對應到xp的7個優先級中去。但是SUN 的linux版本的JVM上所有線程的優先級都是NORM_PRIORITY。在使用優先級的同時也要避免餓死的情況出現。
4、處理 uncaught exceptions:
當一個線程的run()方法執行完畢或者run()方法執行return語句時,線程正常中止。當run方法拋出一個unchecked異常時(注意:run方法是不能拋出checked異常的),線程也會中止并且打印出異常信息。如果你想捕獲處理該異常,則必須為該線程添加一個uncaught exception handler來執行。例如:package?uncaughtexception;
public?class?MyThread?implements?Runnable
{
????@Override
????public?void?run()
????{
????????throw?new?UnsupportedOperationException();
????}
}
package?uncaughtexception;
public?class?TestMyThread
{
????public?static?void?main(String?[]?args)
????{
????????Thread?aThread?=?new?Thread(new?MyThread());
????????
????????aThread.setUncaughtExceptionHandler(new?Thread.UncaughtExceptionHandler()
????????{
????????????@Override
????????????public?void?uncaughtException(Thread?t,?Throwable?e)
????????????{
????????????????System.out.println("Hello");
????????????}
????????});
????????
????????aThread.start();
????}
}
運行結果: Hello