或threadjo(longillis)等帶有超時參數的方法時,線程會進入此狀态。
5)終止(terated)
當線程執行完畢,或因為異常退出run()方法後,線程就進入了終止狀态。
這個線程對象,将不再是可調度的,并且它的任務已經完成了。
以上就是線程的五種狀态啦!
你若理解了這些線程狀态,那麼對于編寫高效,且線程安全的java代碼非常重要。
例如,你需要知道…
何時可能需要等待,或通知其他線程。
何時可能需要處理阻塞狀态,以及如何避免線程死鎖等問題。
…
2、談談java中的synized關鍵字和reentrantlock的區别?
在java中,synized關鍵字和reentrantlock都是用于實現同步的重要機制。
兩者有四個方面的區别。
即它們在“實現方式、使用靈活性、性能以及功能特性”這四個方面存在一些明顯的區别。
1)實現方式:
synized是java語言内置的關鍵字,它在jv層面實現,無法被繼承。
它提供了對類或者實例的加鎖機制,使得同一時間,隻有一個線程可以執行某段代碼。
reentrantlock是java的一個類。
它是javautilcurrentlocks包下提供的一個互斥鎖,通過代碼實現。
因此,它提供了比synized更豐富的功能。
例如,可以中斷等待鎖的線程,也可以嘗試獲取鎖。
2)使用靈活性:
synized的使用較為簡單,隻需要在方法或代碼塊前,加上關鍵字即可。
但是,它的鎖粒度較大,無法精細控制需要同步的代碼範圍。
而reentrantlock,則提供了更多的控制選項,。
例如,可以通過lock()和unlock()方法,顯式地獲取和釋放鎖。
這使得開發者,可以更加靈活地控制同步代碼的範圍。
此外,reentrantlock還支持公平鎖和非公平鎖,而synized總是非公平的。
3)性能:
在java6以及之後的版本中,synized和reentrantlock的性能差距已經不大。
請勿開啟浏覽器閱讀模式,否則将導緻章節内容缺失及無法閱讀下一章。
相鄰推薦:火槍靈能與錦衣衛 惹我?開局就讓你跪下求治病 修仙:我的分身是洪荒巨獸 病嬌女總裁,開局非要貼貼才能好 某魔圓的真理之名 全家都在拖後腿,大帥追妻太難了 豬肉西施她,幹活比殺豬還絲滑! 這真是戀愛攻略? 穿越諸天:從拜師九叔開始 萬器 我被她們戀愛模拟了? 鬥羅:不想成為主角呀 主宰見聞錄 我的監護人是機器人 大唐皇子:我有農場系統 末世多子多福,從美豔老闆娘開始 讓你去修仙,不是去修仙子! 赤紅,寶可夢最強精靈訓練家 重生?我真是好男人啊! 大明中興全憑殺殺殺搶搶搶