?1、開啟一個(gè)新線程的方法,歸結(jié)起來(lái)不外乎有兩種:
2、一個(gè)線程的生命周期:每個(gè)線程的生命周期(lifecycle)一共有六個(gè)狀態(tài)(state),這六個(gè)狀態(tài)用枚舉類型Thread.State的六個(gè)枚舉常量來(lái)表示。分別是:
3、線程優(yōu)先級(jí):線程可以有不同優(yōu)先級(jí),Thread定義了三個(gè)優(yōu)先級(jí)常量:
public?final?static?int?MIN_PRIORITY?=?1;?//最小優(yōu)先級(jí)
public?final?static?int?NORM_PRIORITY?=?5;?//默認(rèn)的優(yōu)先級(jí)
public?final?static?int?MAX_PRIORITY?=?10;?//最大優(yōu)先級(jí)
一個(gè)線程的優(yōu)先級(jí)可以是1到10中任何一個(gè)整數(shù)(包括1和10).方法
void setPriority(int newPriority) 可以用來(lái)設(shè)置線程有限級(jí)。關(guān)于優(yōu)先級(jí)需要注意的是,調(diào)度器總是選擇優(yōu)先級(jí)最高的線程來(lái)執(zhí)行,但是java的線程優(yōu)先級(jí)是和操作系統(tǒng)相關(guān)的,例如windows XP系統(tǒng)有7個(gè)優(yōu)先級(jí),java中的某些優(yōu)先級(jí)會(huì)對(duì)應(yīng)到xp的7個(gè)優(yōu)先級(jí)中去。但是SUN 的linux版本的JVM上所有線程的優(yōu)先級(jí)都是NORM_PRIORITY。在使用優(yōu)先級(jí)的同時(shí)也要避免餓死的情況出現(xiàn)。
4、處理 uncaught exceptions:
當(dāng)一個(gè)線程的run()方法執(zhí)行完畢或者run()方法執(zhí)行return語(yǔ)句時(shí),線程正常中止。當(dāng)run方法拋出一個(gè)unchecked異常時(shí)(注意:run方法是不能拋出checked異常的),線程也會(huì)中止并且打印出異常信息。如果你想捕獲處理該異常,則必須為該線程添加一個(gè)uncaught exception handler來(lái)執(zhí)行。例如: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();
????}
}
運(yùn)行結(jié)果: Hello