Android 檔案鎖研究 FileLock

2021-06-17 20:23:20 字數 746 閱讀 9718

檔案鎖看似簡單,但是在 android 使用卻遇到重重問題,幾經嘗試終於得出正解:

先看如何獲取檔案鎖:

filechannel.trylock()  

要想獲得檔案鎖,先開啟檔案通道,通道可以來自幾處,我嘗試過3處:

1.randomaccessfile 

檔案若不存在會自己建立,結果發現通過其獲取的檔案鎖鎖住某個檔案後,在另外乙個執行緒中任然可以獲取該檔案鎖,具體原因不詳

2.fileinputstream 

檔案若不存在,拋異常,其獲取的 通道是唯讀的,不用用於獲取檔案鎖

3.fileoutputstream

獲取檔案鎖正常,多執行緒測試正常

/**

* 占用某個檔案鎖

* * @param file

* @return

*/public static filelock tryfilelock(file file)

} catch (exception e)

return null; }

public static void freefilelock(filelock fl, file file) catch (ioexception e)

}

樓主剛剛搞錯了,其實 android 中 filelock 只支援程序間死鎖,同一程序不同執行緒是無效的, 但是 windows 中線程間也可以鎖住,看官方解釋這個介面的實現依賴平台!

Android 配置檔案鎖設定

本文內容 何時該使用讀寫鎖.讀寫鎖的寫法.理解讀寫鎖和執行緒互斥的區別。複習 同步化的概念 當乙個方法或 塊被宣告成synchronized,要執行此 必須先取得乙個物件例項或this的鎖定,這個鎖定要在 synchronized修飾的方法或 塊執行完後才能釋放掉 無論這段 是怎樣返回的,是正常執行...

Android方向研究

目前android的發展正處於高速的時期,也是暴利的時期,混亂的時期,搶占地盤的時期。蘋果的iphone和ipad的成功,給了我們無限的幻想,而恰恰google的android給所有崇拜蘋果但有覺得遙不可及的人們看到了希望。全球的消費電子廠商無不蜂擁而上,一時風起雲湧,硝煙四起,誰站的最高看得最遠,...

ORACLE鎖機制研究

資料庫是乙個多使用者使用的共享資源。當多個使用者併發地訪問資料時,在資料庫中就會產生多個事務同時訪問同一資料的情況。若對併發操作不加控制就可能會讀取和儲存不正確的資料,破壞資料庫的一致性。加鎖是實現資料庫併發控制的乙個非常重要的技術。當事務在對某個資料物件進行操作前,先向系統發出請求,對其加鎖。加鎖...