yield();將執行緒從執行轉到就緒狀態 ,讓出cpu時間片,但不會釋放鎖。//類似於重新排隊
join();//類似於插隊加入,將join()的執行緒,放到當前要執行的位置,直到該執行緒執行完,才會再次執行其他執行緒。
notify():通知乙個在物件上等待的執行緒,使其從wait()方法返回,而返回的前提是該執行緒獲取到了物件鎖,沒有獲得鎖的執行緒重新進入waiting狀態
notifyall(): 通知所有等待在物件上的執行緒
wait():呼叫該方法的執行緒進入 waiting 狀態,只有等待另外的執行緒通知或被中斷才會返回,需要注意,呼叫wait()方法後,會釋放物件的鎖
wait(long):超時等待一段時間,這裡的引數時間是毫秒,如果沒有通知就超時返回,
wait(long,int):對於超時時間可以更細粒度煩的控制,可以達到納秒
等待和通知的標準:
01獲取物件鎖
02如果條件不滿足,那麼物件的wait()方法,被通知後仍要檢查條件。
03條件滿足則執行對應的邏輯。
synchronized(物件)
}在通過 wait()、notify()系列方法之前,執行緒必須要獲得該物件的物件級別鎖,即只能在同步方法或同步快中呼叫wait()方法、notify()系列方法,進入wait()方法後,當前執行緒釋放鎖,再從wait()前,執行緒與其他執行緒競爭獲得鎖,執行notify()系列方法的執行緒推出了呼叫了notifyall 的synchronized**塊後,他們就會競爭。如果其中的乙個執行緒獲得了該物件的鎖,他就會執行下去,當他退出**塊時,再釋放鎖,其他所有被喚醒煩人執行緒再競爭,直至所有被喚醒的執行緒都被執行完畢。
執行緒的優先順序
usethread.setpriority(num); //預設為5,(1~10 一般為)理論上有用
設定執行緒優先順序時,針對頻繁阻塞(休眠或者i/o操作)的執行緒需要設定高優先順序,而計算較多、用時較多的執行緒優先順序應設定較低,確保處理器不會被獨佔。
守護執行緒 :被用作完成和支援工作,記憶體** 等等被動啟動的內部執行緒。
當主線程結束,守護執行緒也會結束。設定方法:
主線程結束, 守護執行緒中 finally 也不一定會執行。看時間片是否會分配
執行緒池框架執行流程和原理分析
使用執行緒池的優勢 重用存在的執行緒,減少執行緒建立,消亡的開銷,提高效能 提高響應速度。當任務到達時,任務可以不需要的等到執行緒建立就能立即執行。提高執行緒的可管理性。執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資 源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配,調優和監控。1.執...
SpringMVC學習筆記 10 執行流程詳解
以動態資源請求為例分析springmvc的執行流程 1.瀏覽器傳送的的請求經過tomcat,分配到dispatcherservlet web.xml中配置的 object 儲存controller listinterceptorlist 所有的 4 7 dispatcherservlet把handl...
HDFS Yarn簡介和執行流程
yarn 不同的計算框架可以共享同一hdfs集群上的資料,享受整體的資源排程 可以使mr,hdfs,spark,storm等共用同一集群的框架,yarn可以按框架的資源需求量做出合適的分配 yarn架構 1 resourcemanager rm 整個集群同一時間提供服務的rm只有乙個,負責集群資源的...