2013-07-23 36 views
0

直接從該website公平性保證FIFO調度?

但是,如果我們指定的公平性參數爲「真」,而 創建一個新的ReentrantLock對象,它給我們的 最長等待線程會得到下一個鎖的擔保。聽起來很不錯 對不對?

我認爲它從來沒有保證,它只是影響調度器的決定。它不是或上面鏈接的網站實際上在說真相嗎?

在此先感謝。

回答

3

API documentation for ReentrantLock說(我的重點):

這個類的構造函數接受一個可選的公平性參數。 如果設置爲true,則在爭用時,鎖定允許授予對最長等待線程的訪問權限。否則,此鎖不保證任何 特定的訪問順序。使用許多 線程訪問公平鎖的程序的總體吞吐量可能會低於使用默認設置的整體吞吐量(即速度較慢;通常比較慢);但獲得鎖定的時間差異較小,並可保證缺少飢餓。 但是請注意,鎖的公平性並不能保證線程調度的公平性。因此,使用公平鎖的許多線程中的一個可能連續多次獲取它,而其他活動線程 不能繼續並且當前沒有鎖。另請注意,不定時的tryLock方法不支持公平設置。如果鎖定可用,即使其他線程正在等待,它也會成功。

因此,您所引用的網站似乎過於簡單化了。