JAVA基础共享内存在Java中的实现和节能
2020-10-07 淮安装修公司
共享内存的头部信息是类的私有信息,在多个应用可以对同一共享内存执行写操作时,开始执行写操作和结束写操作时,需调用如下方法: publicbooleanStartWrite()
{
if(mode==0){//标志为0,则表示可写
mode=1;//置标志为1,意味着别的应用不可写该共享内存
ip();
tInt(mode);//写如共享内存的头部信息
returntrue;
}
else{
returnfa虽然从20世纪90年代末开始lse;//指明已经有应用在写该共享内存,本应用不可写该共享内存
}
}
publicbooleanStopWrite()
{一名女子抱着小孩指责一名坐着的女子:“你看到我抱着小孩还跟我抢座位p>
mode=0;//释放写权限
ip();
tInt(mode);//写入共享内存头部信息
returntrue;
} 这里提供的类文件va封装了共享内存的基本接口,读者可以用该类扩展成自己需要的功能全面的类。 如果执行写操作的应用异常中止,那么映像文件的共享内存将不再能执行写操作。为了在应用异常中止后,写操作禁止标志自动消除,必须让运行的应用获知退出的应用。在多线程应用中,可以用同步方法获得这样的效果,但是在多进程中,同步是不起作用的。方法可以采用的多种技巧,这里只是描述一可能的实现:采用文件锁的方式。写共享内存应用在获得对一个共享内存写权限的时候,除了判断头部信息的写权限标志外,还要判断一个临时的锁文件是否可以得到,如果可以得到,则即使头部信息的写权限标志为1(上述),也可以启动写权限,其实这已经表明写权限获得的应用已经异常退出,这段代码如下: //打开一个临时的文件,注意同一共享内存,该文件名要相同,可以在共享文件名后加后缀“.lock”。
RandomAccessFilefis=newRandomAccessFile("ck","rw");
//获得文件通道
FileChannellockfc=tChannel();
//获得文件的独占锁,该方法不产生堵塞,立刻返回
FileLockflock=yLock();
//如果为空,则表明已经有应用占有该锁
if(flock==null){
...//不能执行写操作
}
else{
...//可以执行写操作
} 该锁会在应用异常退出后自动释放,这正是该处所需要的方法。
3 共享内存在java中的应用
共享内存在java应用中,经常有如下两种种应用:
永久对象配置。
在java服务器应用中,用户可能会在运行过程中配置一些参数,而这些参数需要永久有效,当服务器应用重新启动后,这些配置参数仍然可以对应用起作用。这就可以用到该文中的共享内存。该共享内存中保存了服务器的运行参数和一些对象运行特性。可以在应用启动时读入以启用以前配置的参数。
查询共享数据。
一个应用(例 va)是系统的服务进程,其系统的运行状态记录在共享内存中,其中运行状态可能是不断变化的。为了随时了解系统的运行状态,启动另一个应用(例 va),该应用查询该共享内存,汇报系统的运行状态。
可见,共享内存在java应用中还是很有用的,只要组织好共享内存的数据结构,共享内存就可以在应用开发中发挥很不错的作用。
六安看白癜风的医院痛经怎么调理的食谱藤黄健骨丸
-
-
逍遥度转身分阿伦宝刀不老韦德看笑了多图
度转身分!阿伦宝刀不老韦德看笑了(多图)北京时间2月16日,夏洛特全明星名...
- 软装搭配 2020-09-23
-
逍遥度转身分阿伦宝刀不老韦德看笑了多图
-
-
苏炳添不想成绩只冲金韦永丽唯一对手是自己
苏炳添:不想成绩只冲金 韦永丽:唯一对手是自己苏炳添与韦永丽谈到本届...
- 软装搭配 2020-08-08
-
苏炳添不想成绩只冲金韦永丽唯一对手是自己
-
-
二三线城市限购风声紧文昌琼海或列入限购名搭配
二三线城市限购风声紧 文昌琼海或列入限购名单近日,记者针对海南房地产...
- 软装搭配 2020-06-06
-
二三线城市限购风声紧文昌琼海或列入限购名搭配
-
-
快围观海南15市县的这份成绩单出炉你所在搭配
快围观!海南15市县的这份成绩单出炉,你所在的市县拿了多少分?日前,海...
- 软装搭配 2020-06-01
-
快围观海南15市县的这份成绩单出炉你所在搭配
-
-
中勇士双核这样致敬他们都听科比球长大搭配
中!勇士双核这样致敬 他们都听科比球长大汤神今天手感不佳 北京...
- 软装搭配 2020-05-31
-
中勇士双核这样致敬他们都听科比球长大搭配
-
-
万曼联曼城争同一猎物瓜帅礼让索帅敢接吗搭配
万!曼联曼城争同一猎物 瓜帅礼让索帅敢接吗曼城的兴趣在逐渐减弱赛季还...
- 软装搭配 2020-05-30
-
万曼联曼城争同一猎物瓜帅礼让索帅敢接吗搭配