跪求java中共享内存例子(顶就给分) 如题谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 获得一个只读的随机存取文件对象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;} 内存共享??下面有个参考,不知道是不是你要的!http://www.ibm.com/developerworks/cn/java/l-memshare/http://www.ibm.com/developerworks/cn/java/j-shared/ Java语言的分布式应用系统中,存在着大量的分布式共享对象,很多时候需要查询这些对象的状态,以查看系统是否运行正常或者了解这些对象的目前的一些统计数据和状态。如果采用网络通信的方式,显然会增加应用的额外负担,也增加了一些不必要的应用编程。而如果采用共享内存的方式,则可以直接通过共享内存查看对象的状态数据和统计数据,从而减少了一些不必要的麻烦。 遇到错误:进行语法解析时已到达文件结尾,大家帮忙~ 请大家帮看看,如何读一个文件,并且备份成两份! 调用返回类型问题 在线等,立即给分!如何判断自己在系统上的绝对路径 如何设置一个TextField 不接受用户的输入, 只显示程序运算出的值. study_body 继续讲进,HOHO,就一分! JPadpro4.2中怎么配置VisualSourceSafe(或者其他版本控制器也可以) 选择java中的哪个方向好? !!!又来了,,,, 如何用java实现定时器功能? 新手提问:如何修改对象的名称,即对象重命名 请教排序问题,谢谢
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;
}
下面有个参考,不知道是不是你要的!
http://www.ibm.com/developerworks/cn/java/l-memshare/
http://www.ibm.com/developerworks/cn/java/j-shared/