建立執行緒常用的有兩種方式
1,繼承thread類來建立執行緒類。
2,實現 runnable 介面 。
建立執行緒-方法1-繼承 thread類
可以通過繼承 thread 來建立乙個執行緒類,該方法的好處是 **this 代表的就是當前執行緒,**不需要通過 thread.currentthread() 來獲取當前執行緒的引用。
**如下:
/**
* 描述:繼承thread類來建立執行緒類
*/public
class
main
}class
mythread
extends
thread
}
建立執行緒-方法2-實現 runnable 介面通過實現 runnable 介面,並且呼叫 thread 的構造方法時將 runnable 物件作為 target 引數傳入來建立執行緒物件。 該方法的好處是可以規避類的單繼承的限制;但需要通過 thread.currentthread() 來獲取當前執行緒的引用。
/**
* 描述:繼承thread類來建立執行緒類
*/public
class
main
}class
mythread
implements
runnable
}
thread 的常見構造方方法
thread類 常見方法
id:是執行緒的唯一標識,不同執行緒不會重複
名稱:是各種除錯工具用到
狀態:表示執行緒當前所處的乙個情況
優先順序:高的執行緒理論上來說更容易被排程到 關於後台執行緒,需要記住一點:jvm會在乙個程序的所有非後台執行緒結束後,才會結束執行。 是否存活,即簡單的理解,為 run 方法是否執行結束了。
常見的有以下兩種方式:
通過共享的標記來進行溝通
呼叫 interrupt() 方法來通知
通過共享的標記來實現中斷
就是建立乙個boolean型別的變數來控制迴圈是否進行,就是乙個標記。
**如下:
/**
* 描述:標記法中斷執行緒
*/public
class
threaddemo
catch
(interruptedexception e)}}
}public
static
void
main
(string[
] args)
throws interruptedexception
}
這個也是標記法實現的呼叫thread.interrupt()和thread.interrupted()方法返回的是boolean型別的資料,
/**
* 描述:呼叫thread.interrupt()和thread.interrupted()方法
*/public
class
thread2
catch
(interruptedexception e)}}
}public
static
void
main
(string[
] args)
throws interruptedexception
}}
呼叫 interrupt() 方法來通知
這種方式通知收到的更及時,即使執行緒正在 sleep 也可以馬上收到
通過 thread 物件呼叫 interrupt() 方法通知該執行緒停止執行
thread 收到通知的方式有兩種:
1). 如果執行緒呼叫了wait/join/sleep 等方法而阻塞掛起,則以 interruptedexception異常的形式通知,並清除中斷標誌
2). 只是內部的乙個中斷標誌被設定,thread 可以通過
(1). thread.interrupted() 判斷當前執行緒的中斷標誌被設定,清除中斷標誌。
(2). thread.currentthread().isinterrupted() 判斷指定執行緒的中斷標誌被設定,不清除中斷標誌。
**如下:
1,呼叫sleep方法產生異常,從而中斷執行緒
/**
* 描述:呼叫sleep方法產生異常,從而中斷執行緒
*/public
class
threadinterrupt
catch
(interruptedexception e)
for(
int i =
0; i <
10; i++)}
}public
static
void
main
(string[
] args)
throws interruptedexception
}
2,(1),呼叫thread.interrupted()
/**
* 描述:呼叫了thread.interrupted()會標誌位清除
*/public
class
threadde}}
public
static
void
main
(string[
] args)
throws interruptedexception
}
呼叫了thread.interrupted()會標誌位清除
2,呼叫thread.currentthread().isinterrupted()
/**
1. 描述:呼叫thread.currentthread().isinterrupted()標誌位不會清除
*/public
class
threaddem}}
public
static
void
main
(string[
] args)
throws interruptedexception
}
呼叫thread.currentthread().isinterrupted()標誌位不會清除 多執行緒 執行緒中斷
設計思路 1,新建乙個執行緒,其啟動引數是要輸出其執行狀態。2,中斷主線程若干秒,讓新建執行緒持續運作。3,中斷新建執行緒,輸出起執行次數和執行狀態。int count 0 thread t2 new thread catch threadabortexception absortexception...
多執行緒基礎篇(2) 理解中斷
執行緒中斷,可以理解為乙個現成的標識屬性,它表示乙個執行中的執行緒是否被其他執行緒進行了中斷操作,中斷可以用來進行強制終結執行緒 使執行緒進入終止狀態 即在執行run方法過程中直接退出 或者說跳過某段 執行緒中斷的方法 1 stop 方法 不在使用此方法,其中斷線程是立即中斷的,即使是在同步 塊中對...
多執行緒基礎篇(2) 理解中斷
執行緒中斷,可以理解為乙個執行緒的標識屬性,它表示乙個執行中的執行緒是否被其他執行緒進行了中斷操作,中斷可以用來進行強制終結執行緒,即在執行run方法過程中直接退出 或者說跳過某段 執行緒中斷的方法 1 stop 方法 不在使用此方法,其中斷線程是立即中斷的,即使是在同步 塊中對資料進行操作時也會立...