共享鎖和獨佔鎖的經典應用,是控制最初用於讀取的共享文件的更新。某個進程要讀取文件, 會先取得該文件或該文件部分區域的共享鎖。第二個但願讀取相同文件區域的進程也會請求共享 鎖。兩個進程能夠並行讀取,互不影響。可是,假若有第三個進程要更新該文件,它會請求獨佔 鎖。該進程會處於阻滯狀態,直到既有鎖定(共享的、獨佔的)所有解除。一旦給予獨佔鎖,其餘 共享鎖的讀取進程會處於阻滯狀態,直到獨佔鎖解除。這樣,更新進程能夠更改文件,而其餘讀取 進程不會由於文件的更改獲得先後不一致的結果。java
文件鎖有建議使用和強制使用之分。建議型文件鎖會向出請求的進程供當前鎖定信息,但 操做系統並不要求必定這樣作,而是由相關進程進行協調並關注鎖定信息。多數 Unix 和類 Unix 操 做系統使用建議型鎖,有些也使用強制型鎖或兼而有之。操作系統
強制型鎖由操做系統或文件系統強行實施,無論進程對鎖的存在知道與否,都會阻止其對文件 鎖定區域的訪問。微軟的操做系統每每使用的是強制型鎖。假定全部文件鎖均爲建議型,並在訪問 共同資源的各個應用程序間使用一致的文件鎖定,是明智之舉,也是惟一可行的跨平臺策略。依賴 於強制文件鎖定的應用程序,從根子上講就是不可移植的。
3.設計
java.nio 中的類被特地地設計爲支持級聯調用。您可能已經在 StringBuffer 類中看進程
到了級聯調用的使用。資源
若是聰明地使用級聯調用,就能產生簡,優,易讀的 代碼。但若是用,就會使代碼不知所。當級聯調用可 以增長可讀性並使讓您的目標更加明確時使用它。若是使 用級聯調用會使代碼做用不夠清晰,那麼請不要使用它。 請時刻保證您的代碼易於他人閱讀。