2014-01-13 100 views
0

對於下方點爪哇 - 線程睡眠 - 鎖定功能

  • 睡眠()Thread類的方法不會放棄它已經獲得了鎖。

  • 在Java中使用sleep()時,它不能保證當睡眠線程醒來時它肯定會得到CPU,而是會進入Runnable狀態並與其他線程爭奪CPU。

如果當前線程犯規釋放鎖,爲什麼它去Runnable的國家,並與其他線程執行

+2

第二點與第一點沒有任何關係。簡而言之,每個線程都可以獲得CPU的份額來執行其工作。 –

回答

2

競爭試想一下,CPU是食品加工和Thread是一名廚師。一名廚師正在烹飪雞尾酒,並鎖定物體martinibeer。另一個Thread正在煮湯,並獲得鎖List<Vegetable>。想象一下,兩個廚師都爭奪食品加工者。他們有它的對象,並且他們需要只能處理一項任務的CPU。

可運行狀態意味着廚師準備好使用處理器(即Vegetables被清洗或打開瓶子)。無論他有多少物品,任何炊具都可以使用食物處理器。無論任何鎖,任何進程都可以說「我想要使用CPU」。