`
flyingis
  • 浏览: 296920 次
  • 性别: 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>

分享到:
评论

相关推荐

    masm32 程序源代码-exe文件加锁器

    在标题和描述中提到的"exe文件加锁器"是一种安全措施,用于保护可执行程序(.exe文件)免受未经授权的访问或修改。这个加锁器在程序运行前会弹出一个密码输入窗口,只有输入正确的密码才能执行程序,增加了软件的...

    计算机软件-商业源码-查看某一文件被谁加锁.zip

    当一个用户或进程对文件加锁后,其他用户尝试修改时会被阻止,直到锁被释放。文件锁定可以是共享锁(允许多个读取,但不允许写入)或独占锁(仅允许一个用户读写)。 4. **文件锁定机制**:不同的操作系统和编程...

    功能强大全面的免费文件(文件夹)加锁功具!

    文件和文件夹的加密与加锁就是其中一项基础而重要的安全措施。本文将详细介绍一款名为"免费文件(文件夹)加锁工具"的软件,它具备全面的功能、强大的性能,并且完全免费。 这款工具的主要目标是为用户提供简单易用...

    linux 文件I/O编程

    6. **文件锁**: Linux提供了对文件加锁的机制,包括读锁(共享锁)和写锁(独占锁)。读锁允许多个进程同时读取一个文件,但阻止任何进程写入。写锁则阻止其他进程同时读取或写入。使用`flock`或`fcntl`函数可以实现...

    文件夹加锁王 2007 V8[1].55 钻石版(绿色).rar

    文件加密技术是确保数据安全的基础,它通过特定的算法将原始数据转化为看似随机的、无法直接理解的形式,只有拥有正确解密密钥的人才能恢复这些信息。文件夹加锁王采用的加密算法强大而高效,可以有效防止数据泄露,...

    文件夹加锁

    虽然这个程序的安全性不足以应对专业级别的安全威胁,但它为初学者提供了一个了解基础文件安全和加密技术的起点。对于那些寻求更高级别保护的用户,他们应该寻找专门设计的商业级加密软件,这些软件通常会使用更复杂...

    电脑加锁王

    "电脑加锁王"是一款专为用户设计的电脑安全防护软件,它的主要功能是保护用户的电脑免受未经授权的访问,确保个人数据和文件的安全。在现代社会,电脑中存储着大量的个人信息和工作资料,因此,对电脑进行有效的加锁...

    step 加锁/解锁工具

    文件“STEP7中的程序块解锁工具 S7 Blocks UnlockV1.0”可能是第三方开发的一个实用程序,设计用来与STEP 7软件配合使用。版本号“V1.0”表示这是该工具的初始版本,可能包含基础功能,但随着后续更新可能会增加更多...

    第3讲_高级文件IO

    文件加锁可以分为建议性锁和强制性锁两种类型,分别由`flock()`和`fcntl()`函数实现。 ```c #include int flock(int fd, int operation); #include #include int fcntl(int fd, int cmd, ...); ``` 例如,可以...

    c++实现log文件写入

    总的来说,C++实现日志文件写入涉及到文件操作、时间处理、字符串格式化等基础知识。通过这个项目,你可以深入了解这些概念,并提升你的C++编程技能。在使用Visual Studio 2010进行开发时,可以充分利用其IDE特性,...

    移动硬盘加锁

    1. **数据加密**:这是移动硬盘加锁的基础,通过加密技术将数据转化为密文,只有拥有正确密码的人才能解密并访问这些文件。常见的加密方式有AES(高级加密标准),它提供了高安全性,广泛应用于各种加密软件。 2. *...

    php操作文件大全和mysql

    - **flock()**:对文件进行加锁。 - **fnmatch()**:根据模式匹配文件名。 #### 文件流操作 - **fopen()**:打开一个文件或 URL。 - **fpassthru()**:将文件句柄的剩余部分传递到客户端。 - **fputcsv()**:将...

    嵌入式文件IO编程实验

    3. **调试、运行课件中关于文件加锁、解锁的实例。理解文件锁的作用和使用**: - **关键知识点**:`fcntl`函数、文件锁类型(`F_SETLK`, `F_SETLKW`, `F_GETLK`)。 - **实现思路**:使用`open`打开文件,然后调用`...

    SVN客户端使用文档

    为了防止多人同时编辑同一文件导致的冲突,TortoiseSVN提供了文件加锁和解锁的功能。 1. **文件加锁**: - 通过右键菜单中的“TortoiseSVN &gt; 锁定”选项,可以为文件或文件夹加锁。 - 加锁后,其他人无法编辑该...

    电子政务-电子设备指纹锁的加锁电路.zip

    一、指纹识别技术基础 指纹锁依赖于指纹识别技术,这是一种非侵入性的生物识别方式,基于人类指纹的独特性和稳定性。每个指纹都有独一无二的纹路结构,包括弓形、环形和螺旋形等类型,这些特征被用于构建指纹模板。...

    QT单例模式、多线程、双重校验加锁

    QT库是Qt公司开发的一款强大的跨平台应用程序开发框架,它提供了丰富的...总的来说,QT单例模式、多线程和双重校验加锁是开发高效、安全的QT应用的基础。理解并熟练掌握这些概念,将有助于构建出更健壮、可扩展的软件。

    易语言源码易语言文件内存中通讯源码例程.rar

    理解这些命令的工作原理和使用方式是实现文件通讯的基础。 2. 内存管理:文件内存中通讯涉及到在程序内存中创建文件缓冲区,通过读写内存来实现数据交换。易语言提供了“分配内存”、“释放内存”等命令,用于动态...

    五嵌入式文件IO编程.ppt

    这些对象共同构成了文件系统的数据结构基础。 - **超级块对象**:存储文件系统的元数据,如文件系统的类型、块大小等。 - **索引节点对象**:包含文件的实际数据信息,如文件的大小、权限等。 - **文件对象**:表示...

    linux初学者基础知识

    - 可变目录("/var"):包括在系统正常运行过程中会被修改的文件,如假脱机文件、日志文件、加锁文件、临时文件和页面文件等。 - 用户执行文件目录("/bin"):存放系统启动时需要的执行文件,这些文件可以被普通...

    lockdir.zip

    这个压缩包主要用于提供一个名为 "Lockdir" 的文件加锁软件的下载。"Lockdir" 是一款针对Windows操作系统的文件和文件夹保护工具,它允许用户通过密码来锁定他们的私人或敏感数据,防止未经授权的访问。 在 ...

Global site tag (gtag.js) - Google Analytics