java實現執行緒的兩種方式
阿新 • • 發佈:2018-12-07
第一種:
new Thread(){}.start();這表示呼叫Thread 子類物件的 run 方法, new Thread(){}表示一個Thread 的匿名子類的例項物件,子類加上 run 方法後的程式碼如下:
new Thread(){
public void run(){
}
}.start();
第二種:
new Thread(new Runnable(){}).start();這表示呼叫Thread物件接受的 Runnable 物件的 run方法, new Runnable(){}表示一個Runnable 的匿名子類的例項物件,runnable的子類加上
run 方法後的程式碼如下:
new Thread(new Runnable(){
public voidrun(){
}
}
).start();
有兩種實現方法,分別是繼承 Thread 類與實現 Runnable 介面
用synchronized 關鍵字修飾同步方法
反對使用stop(),是因為它不安全。它會解除由執行緒獲取的所有鎖定,而且如果物件處於一
種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題
所在。 suspend()方法容易發生死鎖。呼叫suspend()的時候,目標執行緒會停下來,但卻仍
然持有在這之前獲得的鎖定。對任何執行緒來說,如果它們想恢復目標執行緒,同時又試圖使用任何一個鎖定
的資源,就會造成死鎖。所以不應該使用 suspend(),而應在自己的 Thread 類中置入一個
標誌,指出執行緒應該活動還是掛起。若標誌指出執行緒應該掛起,便用 wait()命其進入等待狀
態。若標誌指出執行緒應當恢復,則用一個 notify()重新啟動執行緒。