第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多個java程序?qū)懸粋€文件,如何保證只有一個程序在寫這個文件呢?

多個java程序?qū)懸粋€文件,如何保證只有一個程序在寫這個文件呢?

翻翻過去那場雪 2019-05-11 08:42:44
以前做的是多線程加鎖其實(shí)只要加個synchronized就好了,但是如果是多個不同的java程序怎么保證只有一個進(jìn)程在寫入呢用文件鎖可行嗎?FileChannelfc=fi.getChannel();returnfc.tryLock();如果放任不管,多個進(jìn)程同時寫一個文件會出問題嗎?
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個贊

不管是多個進(jìn)程寫同一個文件,還是多個線程寫同一個快內(nèi)存,都屬于共享資源的競爭問題,如果放任不管,操作系統(tǒng)會把你所有的內(nèi)容寫到硬盤上而不報(bào)任何錯,但是這樣會造成程序結(jié)果的不確定性,或者說不可預(yù)測程序的結(jié)果,進(jìn)而導(dǎo)致其他問題,所以有一系列的同步方案來避免這種不確定性,比如說信號量,鎖等等。如果你能容忍這種不確定性,那你盡管放任不管。
另外,java提供了文件加鎖機(jī)制,多個jvm進(jìn)程照樣可行,調(diào)用FileChannel類的lock和tryLock方法,第一個調(diào)用會阻塞直至可獲得鎖,而第二個調(diào)用將立即返回,要么返回鎖,要么在鎖不可獲得的情況下返回null。這個文件將保持鎖定狀態(tài),直至通道關(guān)閉,或者在鎖上調(diào)用了release方法。
這兩個方法還可以在文件的某一個區(qū)域上加鎖,具體看API。
                            
查看完整回答
反對 回復(fù) 2019-05-11
  • 2 回答
  • 0 關(guān)注
  • 951 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號