亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java.c

?? JAVA通過共享內存實現進程間的通信!這個是一個完整的代碼!
?? C
字號:
共享內存在java中的實現 
在jdk1.4中提供的類MappedByteBuffer為我們實現共享內存提供了較好的方法。該緩 沖區實際上是一個磁盤文件的內存映像。二者的變化將保持同步,即內存數據發生變化會立 刻反映到磁盤文件中,這樣會有效的保證共享內存的實現。

將共享內存和磁盤文件建立聯系的是文件通道類:FileChannel。該類的加入是JDK為了統一對外部設備(文件、網絡接口等)的訪問方法,并且加強了多線程對同一文件進行存取的安全性。例如讀寫操作統一成read和write。這里只是用它來建立共享內存用,它建立 了共享內存和磁盤文件之間的一個通道。

打開一個文件建立一個文件通道可以用RandomAccessFile類中的方法getChannel。該方法將直接返回一個文件通道。該文件通道由于對應的文件設為隨機存取文件,一方面可以進行讀寫兩種操作,另一方面使用它不會破壞映像文件的內容(如果用FileOutputStream直接打開一個映像文件會將該文件的大小置為0,當然數據會全部丟失)。這里,如果用 FileOutputStream和FileInputStream則不能理想的實現共享內存的要求,因為這兩個類同時 實現自由的讀寫操作要困難得多。

下面的代碼實現了如上功能,它的作用類似UNIX系統中的mmap函數。 

// 獲得一個只讀的隨機存取文件對象 
RandomAccessFile RAFile = new RandomAccessFile(filename,"r");

// 獲得相應的文件通道 
FileChannel fc = RAFile.getChannel();

// 取得文件的實際大小,以便映像到共享內存 
int size = (int)fc.size();

// 獲得共享內存緩沖區,該共享內存只讀 
MappedByteBuffer mapBuf = fc.map(FileChannel.MAP_RO,0,size);

// 獲得一個可讀寫的隨機存取文件對象 
RAFile = new RandomAccessFile(filename,"rw");

// 獲得相應的文件通道 
fc = RAFile.getChannel();

// 取得文件的實際大小,以便映像到共享內存 
size = (int)fc.size();

// 獲得共享內存緩沖區,該共享內存可讀寫 
mapBuf = fc.map(FileChannel.MAP_RW,0,size);

// 獲取頭部消息:存取權限 
mode = mapBuf.getInt(); 

如果多個應用映像同一文件名的共享內存,則意味著這多個應用共享了同一內存數據。 這些應用對于文件可以具有同等存取權限,一個應用對數據的刷新會更新到多個應用中。

為了防止多個應用同時對共享內存進行寫操作,可以在該共享內存的頭部信息加入寫操 作標志。該共享內存的頭部基本信息至少有: 
int Length; // 共享內存的長度。
int mode; // 該共享內存目前的存取模式。




共享內存的頭部信息是類的私有信息,在多個應用可以對同一共享內存執行寫操作時, 開始執行寫操作和結束寫操作時,需調用如下方法: 
public boolean StartWrite()
{
if(mode == 0) { // 標志為0,則表示可寫
mode = 1; // 置標志為1,意味著別的應用不可寫該共享內存
mapBuf.flip(); 
mapBuf.putInt(mode); // 寫如共享內存的頭部信息
return true;
}
else {
return false; // 指明已經有應用在寫該共享內存,本應用不可寫該共享內存
}
}

public boolean StopWrite()
{
mode = 0; // 釋放寫權限
mapBuf.flip(); 
mapBuf.putInt(mode); // 寫入共享內存頭部信息
return true;
}

這里提供的類文件mmap.java封裝了共享內存的基本接口,讀者可以用該類擴展成自己 需要的功能全面的類。

如果執行寫操作的應用異常中止,那么映像文件的共享內存將不再能執行寫操作。為了在應用異常中止后,寫操作禁止標志自動消除,必須讓運行的應用獲知退出的應用。在多線程應用中,可以用同步方法獲得這樣的效果,但是在多進程中,同步是不起作用的。方法可以采用的多種技巧,這里只是描述一可能的實現:采用文件鎖的方式。寫共享內存應用在獲得對一個共享內存寫權限的時候,除了判斷頭部信息的寫權限標志外,還要判斷一個臨時的鎖文件是否可以得到,如果可以得到,則即使頭部信息的寫權限標志為1(上述),也可以啟動寫權限,其實這已經表明寫權限獲得的應用已經異常退出,這段代碼如下: 
// 打開一個臨時的文件,注意同一共享內存,該文件名要相同,可以在共享文件名后加后綴“.lock”。
RandomAccessFile fis = new RandomAccessFile("shm.lock","rw");
// 獲得文件通道
FileChannel lockfc = fis.getChannel();
// 獲得文件的獨占鎖,該方法不產生堵塞,立刻返回
FileLock flock = lockfc.tryLock();
// 如果為空,則表明已經有應用占有該鎖
if(flock == null) {
...// 不能執行寫操作
}
else {
...// 可以執行寫操作
}


該鎖會在應用異常退出后自動釋放,這正是該處所需要的方法。

3 共享內存在java中的應用 
共享內存在java應用中,經常有如下兩種種應用: 

永久對象配置。 
在 java服務器應用中,用戶可能會在運行過程中配置一些參數,而這些參數需要永久有效,當服務器應用重新啟動后,這些配置參數仍然可以對應用起作用。這就可以用到該文中的共享內存。該共享內存中保存了服務器的運行參數和一些對象運行特性。可以在應用啟 動時讀入以啟用以前配置的參數。

查詢共享數據。 
一個應用是系統的服務進程,其系統的運行狀態記錄在共享內存中,其中運行狀態可能是不斷變化的。為了隨時了解系統的運行狀態,啟動另一個應用,該應用查詢該共享內存,匯報系統的運行狀態。

可見,共享內存在java應用中還是很有用的,只要組織好共享內存的數據結構,共享內存就可以在應用開發中發揮很不錯的作用。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合一区在线| 午夜精品久久久久影视| 亚洲欧美色图小说| 日韩不卡手机在线v区| 国产麻豆91精品| 欧美日韩一区二区三区四区五区 | 丝袜诱惑制服诱惑色一区在线观看| 免费成人性网站| 色猫猫国产区一区二在线视频| 欧美电影精品一区二区| 亚洲主播在线播放| 成人看片黄a免费看在线| 7777精品伊人久久久大香线蕉的| 最新日韩av在线| 国产精品 欧美精品| 日韩一区二区三区电影| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲成人一区二区在线观看| 成人午夜在线视频| 精品剧情在线观看| 麻豆成人久久精品二区三区小说| 欧美色倩网站大全免费| 亚洲精品中文字幕在线观看| 国产99久久久国产精品免费看| 一区二区免费看| 国产精品久久久久久久久免费樱桃 | 99久久综合狠狠综合久久| 日韩欧美在线观看一区二区三区| 亚洲女子a中天字幕| 懂色av一区二区三区免费观看 | 日韩精品一区二区三区四区| 亚洲成国产人片在线观看| 色婷婷av一区二区三区之一色屋| 国产精品视频免费| 成人晚上爱看视频| 国产精品视频一二三区| 福利一区二区在线观看| 日本一区二区三区久久久久久久久不| 毛片不卡一区二区| 日韩美女视频在线| 久久99这里只有精品| 欧美mv和日韩mv国产网站| 日韩av不卡一区二区| 这里只有精品视频在线观看| 亚洲成人手机在线| 欧美精品一二三| 日韩电影在线一区二区三区| 7777精品伊人久久久大香线蕉的| 日本不卡视频一二三区| 日韩欧美国产一区二区三区| 激情综合色播激情啊| 国产欧美一区二区三区在线老狼| 国产精品一级片| 国产精品久久久久影院色老大| 成人黄色在线看| 亚洲免费av观看| 69成人精品免费视频| 麻豆一区二区在线| 国产欧美精品日韩区二区麻豆天美| 国产成a人亚洲精品| 一区二区三区在线播| 欧美巨大另类极品videosbest| 麻豆成人久久精品二区三区红| 久久香蕉国产线看观看99| 成人深夜视频在线观看| 一区二区久久久| 日韩欧美在线123| 成人av影视在线观看| 夜夜操天天操亚洲| 欧美成人一区二区三区在线观看| 国产曰批免费观看久久久| 综合久久久久综合| 91精品国产入口| 国产馆精品极品| 亚洲福利一区二区三区| 久久综合色一综合色88| 色av一区二区| 国产综合久久久久久久久久久久| 亚洲欧美日韩在线播放| 日韩视频123| 日本韩国视频一区二区| 麻豆精品在线视频| 亚洲猫色日本管| 精品国产免费人成在线观看| 日韩精品成人一区二区三区| 久久亚洲精精品中文字幕早川悠里 | 成人国产精品免费观看视频| 偷窥国产亚洲免费视频| 国产日韩av一区| 欧美一级夜夜爽| 91福利在线看| 懂色av中文字幕一区二区三区| 午夜不卡av免费| 国产精品久久二区二区| 精品国产伦一区二区三区观看体验| 91在线视频免费91| 国产乱码精品1区2区3区| 日日夜夜免费精品视频| 亚洲精品成人少妇| 中文字幕免费在线观看视频一区| 欧美一区2区视频在线观看| 色又黄又爽网站www久久| 福利视频网站一区二区三区| 精品在线免费视频| 免费成人性网站| 石原莉奈在线亚洲三区| 伊人色综合久久天天| 国产精品人成在线观看免费| 亚洲精品一区二区三区四区高清 | 成人av资源在线| 国产一区免费电影| 精品一区二区国语对白| 蜜桃视频一区二区三区在线观看| 午夜国产精品一区| 亚洲va在线va天堂| 一区二区免费在线| 亚洲精品乱码久久久久| 亚洲精品中文字幕在线观看| 椎名由奈av一区二区三区| 中文字幕成人在线观看| 国产精品久久久久一区二区三区 | 成人91在线观看| 国产不卡视频在线播放| 国产一区不卡在线| 国产在线精品一区二区夜色| 国产乱淫av一区二区三区| 国产一区二区精品久久91| 欧美日韩高清在线| 欧美中文字幕一区| 欧美天天综合网| 欧美肥妇free| 精品久久久久一区| 国产欧美一区二区精品忘忧草| xfplay精品久久| 国产午夜精品美女毛片视频| 国产欧美日韩精品在线| 日韩一区在线免费观看| 一区二区三区四区国产精品| 亚洲自拍偷拍麻豆| 婷婷一区二区三区| 国产一区二区在线电影| 成人动漫精品一区二区| av亚洲精华国产精华精| 欧美在线你懂的| 欧美国产一区二区| 国产区在线观看成人精品| 国产日本一区二区| 亚洲男同性视频| 日本不卡一二三| 国产99久久久国产精品| 欧美主播一区二区三区| 日韩美女视频在线| 国产精品美女久久久久aⅴ国产馆| 亚洲美女屁股眼交3| 日本美女一区二区三区视频| 福利91精品一区二区三区| 色婷婷综合视频在线观看| 欧美精品v国产精品v日韩精品| 欧美成人精品3d动漫h| 国产精品午夜春色av| 亚洲国产精品久久一线不卡| 国产在线看一区| 在线观看91视频| 精品美女在线播放| 亚洲精品欧美综合四区| 国模套图日韩精品一区二区 | 欧美精品乱人伦久久久久久| 久久综合九色综合欧美98| 国产欧美日韩三级| 欧美视频第二页| 日韩三级视频中文字幕| 欧美精彩视频一区二区三区| 亚洲一区在线电影| 国产精品91一区二区| 欧美日韩国产综合一区二区| 亚洲国产精品高清| 另类小说视频一区二区| 一本到高清视频免费精品| 久久综合久久综合亚洲| 午夜亚洲福利老司机| 91小宝寻花一区二区三区| 精品少妇一区二区三区在线视频| 一区二区三区电影在线播| 国产电影一区二区三区| 精品久久久久久综合日本欧美| 亚洲成人av电影在线| aaa欧美日韩| 国产欧美日韩不卡免费| 久久66热偷产精品| 欧美一三区三区四区免费在线看 | 亚洲三级在线观看| 风间由美一区二区三区在线观看| 欧美一区午夜视频在线观看| 亚洲mv在线观看| 国产老妇另类xxxxx| 欧美日韩不卡视频| 亚洲一区二区三区小说| 在线观看亚洲一区| 亚洲黄色av一区| 99视频在线观看一区三区|