底层_读取文件时上锁_demo
来源:互联网 发布:求生之路2游侠网络联机 编辑:程序博客网 时间:2024/06/05 20:52
package com.nio;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.nio.channels.FileLock;public class LockMe{ static final int LENGTH = 0x8FFFFFF;// 128M文件 static FileChannel fc; @SuppressWarnings("resource") public static void main(String[] args) throws Exception { fc = new RandomAccessFile("lockTest", "rw").getChannel(); MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, LENGTH); for (int i = 0; i < LENGTH; i++) { out.put((byte)'x'); } new MyThread(out, 0, 0 + LENGTH / 3); new MyThread(out, LENGTH / 2, LENGTH / 2 + LENGTH / 4); } private static class MyThread extends Thread { private ByteBuffer buff; private int start, end; MyThread(ByteBuffer bb, int start, int end) { super(); this.start = start; this.end = end; bb.limit(end); bb.position(start); buff = bb.slice(); start(); } @Override public void run() { try { // get lock FileLock fl = fc.lock(start, end, false); System.out.println("Locked " + start + " to " + end); // execute while (buff.position() < buff.limit() - 1) buff.put((byte)(buff.get() + 1)); // 释放锁 fl.release(); System.out.println("Release " + start + " to " + end); } catch (Exception e) { e.printStackTrace(); } } }}
0 0
- 底层_读取文件时上锁_demo
- 文件上锁
- Struts2_文件上传_Demo
- AIDL_Service_多线程_通知_Demo
- C++底层读取Shp文件
- 资源文件读取_文件
- 文件的读写和上锁
- 文件的读写和上锁
- 文件上锁lockf() 和fcntl()
- 上锁
- JAVA_IO_文件读取_细节
- 文件操作之1_底层文件访问
- 对"AIDL_Service_多线程_通知_Demo "的修改
- 通过fcntl函数给文件上锁
- Xcode系统文件【上锁】防止误操作方法
- Linux下weblogic文件启动上锁
- 黑_马_程_序_员_文件读取的一种方法
- java中读取文件大全_备忘录
- Ubnutu忘记用户密码怎么办
- hdoj 5533 Dancing Stars on Me【数学】
- iOS动画和特效(三)MotionEffects
- Python中的__main__
- Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set——【hibernate 日常错误】
- 底层_读取文件时上锁_demo
- thinkphp3.2 控制器
- vim 正则表达式
- Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice
- MyEclipse代码提示设置
- 68,自定义代码生成快捷键
- [ACM]螺旋
- 自考那些事儿(五):软件开发工具(实践篇)
- HTTPS安全协议的原理及配置使用