欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java读写共享内存代码,java读写共享,java写入共享内存代码

来源: javaer 分享于  点击 38929 次 点评:148

java读写共享内存代码,java读写共享,java写入共享内存代码


java写入共享内存代码:

package com.unmi;  import java.io.RandomAccessFile;  import java.nio.MappedByteBuffer;  import java.nio.channels.FileChannel;  import java.nio.channels.FileChannel.MapMode;  /**  * 往 "共享内存" 写入数据  * @author Unmi  */  public class WriteShareMemory {      /**      * @param args      * @throws Exception       */      public static void main(String[] args) throws Exception {          RandomAccessFile raf = new RandomAccessFile("c:/swap.mm", "rw");          FileChannel fc = raf.getChannel();          MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 1024);          //清除文件内容          for(int i=0;i<1024;i++){              mbb.put(i,(byte)0);          }          //从文件的第二个字节开始,依次写入 A-Z 字母,第一个字节指明了当前操作的位置          for(int i=65;i<91;i++){              int index = i-63;              int flag = mbb.get(0); //可读标置第一个字节为 0              if(flag != 0){ //不是可写标示 0,则重复循环,等待                  i --;                  continue;              }              mbb.put(0,(byte)1); //正在写数据,标志第一个字节为 1              mbb.put(1,(byte)(index)); //写数据的位置              System.out.println("程序 WriteShareMemory:"+System.currentTimeMillis() +                       ":位置:" + index +" 写入数据:" + (char)i);              mbb.put(index,(byte)i);//index 位置写入数据              mbb.put(0,(byte)2); //置可读数据标志第一个字节为 2              Thread.sleep(513);          }      }  }  

java读共享内存:

package com.unmi;  import java.io.RandomAccessFile;  import java.nio.MappedByteBuffer;  import java.nio.channels.FileChannel;  import java.nio.channels.FileChannel.MapMode;  /**  * 从 "共享内存" 读出数据  * @author Unmi  */  public class ReadShareMemory {      /**      * @param args      * @throws Exception       */      public static void main(String[] args) throws Exception {          RandomAccessFile raf = new RandomAccessFile("c:/swap.mm", "rw");          FileChannel fc = raf.getChannel();          MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 1024);          int lastIndex = 0;          for(int i=1;i<27;i++){              int flag = mbb.get(0); //取读写数据的标志              int index = mbb.get(1); //读取数据的位置,2 为可读              if(flag != 2 || index == lastIndex){ //假如不可读,或未写入新数据时重复循环                  i--;                  continue;              }              lastIndex = index;              System.out.println("程序 ReadShareMemory:" + System.currentTimeMillis() +                       ":位置:" + index +" 读出数据:" + (char)mbb.get(index));              mbb.put(0,(byte)0); //置第一个字节为可读标志为 0              if(index == 27){ //读完数据后退出                  break;              }          }      }  }  
相关栏目:

用户点评