`
flyingis
  • 浏览: 290221 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件加锁基础

阅读更多

作者:Flyingis

    文件加锁是
JDK1.4引入的一种机制,它允许我们同步访问某个作为共享资源的文件。竞争同一文件的两个线程可能在不同的Java虚拟机上,或者一个是Java线程,另一个是操作系统中的某个本地线程。文件锁对其他的操作系统进程是可见的,因为Java的文件加锁直接映射到了本地操作系统的加锁工具。<!----><o:p></o:p>

通过对FileChannel调用tryLock()lock(),就可以获得整个文件的FileLock。特殊的是,SocketChannel/DatagramChannel/ServerSocketChannel不需要加锁,因为它们是从单进程实体继承而来,我们通常不在两个进程之间共享网络的socket<o:p></o:p>

tryLock()是非阻塞式的,它设法获取锁,但如果不能获得,例如因为其他一些进程已经持有相同的锁,而且不共享时,它将直接从方法调用返回。<o:p></o:p>

lock()是阻塞式的,它要阻塞进程直到锁可以获得,或调用lock()的线程中断,或调用lock()的通道关闭。<o:p></o:p>

对独占锁和共享锁的支持必须由底层的操作系统提供。锁的类型可以通过FileLock.isShared()进行查询。另外,我们不能获取缓冲器上的锁,只能是通道上的。<o:p></o:p>

文件加锁的实际应用之一:文件映射通常应用于大型的文件,我们可能需要对巨大的文件进行部分加锁,以便其他的进程可以修改文件中未被加锁的部分,数据库就是如此,使得多用户可以访问到未加锁的部分数据。其他的应用还知之甚少。
<o:p>
</o:p>

分享到:
评论

相关推荐

    一个SpringBoot基础项目框架

    介绍 本仓库是一个SpringBoot基础项目框架 主要用途是:在学习其他技术时,需要有一个...这样的好处是:每次在业务代码中想加锁的话,就直接在方法上打一个注解就可以了,不需要在业务代码中写很多重复的代码了,非常

    SpringMVC基础上的web框架

    这个框架是在学习Spring的时候,为了积累学习成果,自己搭建的,一般的系统开发也可以直接使用,包括一个系统开发的基础功能。 以下是当时自己开发时的日志,大致可以说明框架里已有功能 1.0.5 从web项目迁移成maven...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

    操作系统实验

    以UNIX系统文件部分系统调用为基础设计一个简易的图书管理系统。要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计并打印出统计报表,操作界面要尽量完善。图书资料信息必须...

    smartsvn6.6.9

    SmartSVN是一个功能多且易于使用的Subversion 客户端.除了标准的SVN指令(例如checkout、update、commit...(3) 加锁功能:在文件更新时保护文件,避免不同的用户更改同一文件时发生冲突。(4) 提供不同版本源程序的比较。

    木木个人主页ASP整站源码.rar

    木木个人主页ASP整站源码在原来的基础上新增了:卫视、翻译、解梦等栏目;更换了媒体播放器,并整合了论坛。  媒体播放器的音乐位置是打开play目录下的rhapsody.js文件自行加入  用此程序的麻烦您给做个连接,本...

    MS-DOS7.chm

    MS-DOS 7.10在MS-DOS 6的基础上,对系统的易用性和安全性方面做了改进。本主题描述了MS-DOS 7.10的一些富有特色的新功能。要了解MS-DOS 6和MS-DOS 7.10所包涵的共同的特征信息,请参阅MS-DOS 用户向导的“欢迎”章节...

    清华大学Linux操作系统原理与应用

    8.1 Linux文件系统基础 165 8.1.1 Linux文件结构 165 8.1.2 Linux文件系统 166 8.1.3 文件类型 167 8.1.4 文件访问权限 168 8.2 虚拟文件系统 168 8.2.1 虚拟文件系统的引入 168 8.2.2 VFS中的数据结构 170 8.2.3 ...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    尽量不在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,而且是整个应用的基础常量。 单选 10.集合在遍历过程中,有时需要对符合一定条件的元素进行删除,下列哪些说法是正确的:B A .在 foreach ...

    VFP编程实例及提高实战之路 PART2

    其中不乏Hanoi塔问题动画、产品加锁(时间掣)技术、通用查询、把汉字转换为拼音、利用摄像头采集照片信息、自动生成错误日志的主程序、音视频播放、编排考场、制作和调用CHM帮助文件等实用程序。所有实例均详细叙述...

    VFP编程实例及提高 PART3

    其中不乏Hanoi塔问题动画、产品加锁(时间掣)技术、通用查询、把汉字转换为拼音、利用摄像头采集照片信息、自动生成错误日志的主程序、音视频播放、编排考场、制作和调用CHM帮助文件等实用程序。所有实例均详细叙述...

    powerbuilder

    当Print组函数生成新行时,系统自动把打印光标的x坐标位置设置为0,y坐标位置在原有基础上增加当前行距值。使用PrintSetSpacing()函数可以改变当前打印作业的行距。 -------------------------------------------...

    Oracle.11g.从入门到精通 (1/2)

    第3章 SQL语言基础 3.1 SQL概述 3.1.1 SQL语言的功能 3.1.2 SQL的特点 3.1.3 SQL语句的编写规则 3.2 数据定义 3.2.1 CREATE 3.2.2 DROP 3.2.3 ALTER 3.3 数据查询 3.3.1 简单查询 3.3.2 WHERE子句 3.3.3 ORDER BY...

    Oracle.11g.从入门到精通 (2/2)

    第3章 SQL语言基础 3.1 SQL概述 3.1.1 SQL语言的功能 3.1.2 SQL的特点 3.1.3 SQL语句的编写规则 3.2 数据定义 3.2.1 CREATE 3.2.2 DROP 3.2.3 ALTER 3.3 数据查询 3.3.1 简单查询 3.3.2 WHERE子句 3.3.3 ORDER BY...

    Oracle11g从入门到精通

    从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用开发基础,并通过两个完整案例来介绍基于Java开发包和Oracle数据库...

    Oracle11g从入门到精通2

    第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询与删除 11.1.6 OEM中控制...

    perl语言脚本文档说明

    加锁问题 180 15.5.4 在其他地方使用文件锁的问题 181 15.6 课时小结 181 15.7 课外作业 181 15.7.1 专家答疑 181 15.7.2 思考题 182 15.7.3 解答 182 15.7.4 实习 182 第16学时 Perl语言开发界 183 16.1 ...

    24日学好Perl语言

    加锁问题 180 15.5.4 在其他地方使用文件锁的问题 181 15.6 课时小结 181 15.7 课外作业 181 15.7.1 专家答疑 181 15.7.2 思考题 182 15.7.3 解答 182 15.7.4 实习 182 第16学时 Perl语言开发界 183 16.1 Perl究竟...

Global site tag (gtag.js) - Google Analytics