1. 程式人生 > >java面試題之wait(),notify()和suspend(),resume()之間的區別

java面試題之wait(),notify()和suspend(),resume()之間的區別

wait()方法和notify()方法的區別:

這兩個方法都是屬於Object類中的,也是配套使用的,當呼叫這兩個方法阻塞時要釋放佔用的鎖,而鎖是任何物件都具有的,呼叫任意物件的wait()方法導致執行緒阻塞,並且該物件上的鎖被釋放;

而呼叫任意物件的notify()方法則導致從呼叫該物件的wait()方法而阻塞的執行緒中隨機選擇一個解除阻塞

 

suspend()方法和resume()方法區別:

這兩個方法配套使用,suspend方法使得執行緒進入阻塞狀態,並且不會自動恢復,必須其對應的resume方法被呼叫,才能使得執行緒重新進入可執行狀態。

 

yield方法:使當前執行緒放棄當前已經分得的CPU時間,但不使當前執行緒阻塞,即執行緒仍處於可執行狀態,隨時可能再次分的CPU時間。呼叫yield方法的效果等價於排程程式認為該執行緒已執行了足夠的時間從而轉到另一個執行緒