標籤:mod 哪些 不同的 pop isalive 主線程 data- 執行 read
Java基礎——線程總結
一、線程是什嗎?
線程:一個程式裡不同的運行路徑。
二、怎樣建立線程?
兩種方法建立線程:
第一種
(1)定義詳細功能類實現Runnable介面,能夠多次調用而實現資料共用
(2)Thread myThread = new Thread(…) //參數為Runnable介面類型
(3)Runnable中僅僅有一個方法
public void run(){……} //用以定義線程執行體
另外一種
(1)定義一個Thread的子類並重寫run()方法
class MyThread extends Thread { public void run(){……} }
(2)產生該類的對象
MyThread myThread = new MyThread (…)
三、能夠對線程做哪些控制?
方法 |
功能 |
bool isAlive(myThread Thread) |
推斷線程是否還“活”著,即線程是否還未終止。 |
int getPririty() |
獲得線程的優先順序數值 |
void setPriority(int NewPriority) |
設定線程的優先順序數值 |
Thread.sleep(int sleepTime) |
指定當前線程的睡眠時間(單位:毫秒) |
void join() |
將當前線程與上一主線程合并,即A線程的a()方法調用了B線程。則讓B線程結束,再恢複A線程繼續運行。 |
void yield() |
讓出CPU,當前線程進入就緒隊列等待調度。 |
void wait() |
當前線程進入對象的wait pool。 |
void notify()/void notifyAll() |
喚醒對象的wait pool中的一個/全部等待線程。 |
四、辨析wait()與sleep()
之所以對這兩個方法辨析,它們有個共同點——暫停線程的運行。但要說起它們的不同點。那還是挺多的。
不同點:
(1)Wait()是Object對象的方法;而Sleep(int sleepTime)是Thead()線程的方法。
(2)Wait()運行後,當前對象的鎖就會被釋放;而Sleep(int)運行後,鎖仍然在其手中。
(3)Wait()不須要指定停留時間,須要notify()方法或notifyAll()方法將其喚醒;而Sleep(int),當中int指定睡眠的毫秒數,僅僅有在超過這個時間後。醒過來,當再次獲得時間片之後,才幹繼續運行。
Java基礎——線程總結