`

Java 文件锁技术

阅读更多

    IRIP项目中,Agent每分钟都要向Director请求数据。为了保证Agent正常运行,防止意外中断,我添加了Windows schedule task 去定时启动Agent(Agent运行在Windows系统上)。

    同时,为了保证Agent不被多次启动,我在Agent中使用了文件锁技术。当Agent启动时,会得到一个指定文件的锁,如果Agent正常运行,该锁会一直保持,不会释放,除非Agent中断,才会释放该锁。每次Windows schedule task去启动Agent时,就会先判断是否能得到指定文件的锁,如果Agent正在正常运行,说明该指定文件的锁已经被占用,本次启动就无法拿到指定文件的锁,拿不到锁,就撤销本次启动,达到防止Agent多次运行的目的。

 

    文件锁的使用很简单,下面简要给出例子:

 

import java.io.FileOutputStream;
import java.nio.channels.FileLock;

public class FileLocking {
	public static void main(String[] args) throws Exception {
		FileOutputStream fos;
		fos = new FileOutputStream("file.txt");
		FileLock fl = fos.getChannel().tryLock();//得到锁
		if (fl != null) {//调用自己的操作
			System.out.println("Locked File");
			doSomething();//这是一个会一直运行下去的操作
			fl.release();
			System.out.println("Released Lock");
		}else{
			//得不到锁,退出程序,这能保证该进程同时只能执行一个
			return;
		}
		fos.close();

	}
}
分享到:
评论

相关推荐

    简单java文件过滤

    当然,实际应用中可能需要考虑更多因素,如错误处理、文件锁、并发访问等。在大型项目中,你可能会选择使用Apache Commons IO库或Java 8的Stream API来简化文件操作。 总的来说,“简单java文件过滤”涉及了Java中...

    java web开发技术大全1 pdf

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    Java Web开发技术大全.zip pdf文件

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    java分布式锁实现代码

    本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是一个高性能的键值数据库,常被用作分布式系统的缓存或数据存储。Redisson是基于...

    JAVA核心技术 高清扫描版

    《JAVA核心技术》是一本深入探讨Java编程语言的权威著作,高清扫描版则为读者提供了清晰易读的电子阅读体验。这本书全面覆盖了Java的核心概念和技术,对于初学者和经验丰富的开发者来说,都是不可或缺的参考资料。 ...

    Java Web开发技术大全5.z05 pdf

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    java web开发技术大全3 z03 pdf

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    Java版文件系统

    Java的`java.util.concurrent`包提供了锁和同步原语,如`synchronized`关键字、`ReentrantLock`和`Semaphore`,用于管理并发访问。 7. **文件系统设计**:一个完整的文件系统需要考虑目录结构、文件命名规则、文件...

    基于Java的FastDFS大文件上传与断点续传设计源码

    该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供了文件上传、文件处理、文件存储等功能。通过该项目,开发者可以学习并实践Java技术的应用,为后续的Web开发奠定...

    java web开发技术大全4 z04 pdf

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    Java核心技术卷2.zip

    3. **I/O流**:Java的`java.io`和`java.nio`包提供了广泛的输入/输出流类,用于读写文件、处理网络数据以及在内存中传输数据。了解字节流、字符流、缓冲流、对象流和管道流的使用,以及NIO(非阻塞I/O)的概念,能...

    java 核心技术2

    2. Java I/O流的操作和NIO技术,让学习者能够处理文件读写、网络通信中的数据流。 3. 多线程编程和并发控制,教授如何在Java中创建和管理线程,以及使用锁、同步机制、并发集合等来提高程序的执行效率和稳定性。 4. ...

    java调用Oracle的锁表命令

    文件`ConnectOracle.java`可能包含了建立JDBC连接的代码。这通常涉及以下步骤: - 导入所需的JDBC库,如`import java.sql.Connection; import java.sql.DriverManager;` - 加载Oracle JDBC驱动,例如`Class.for...

    Java 2教程(第五版)

    文件锁、映射的I/O技术以及数据结构与集合;服务器端Java技术部分讨论了JFC/Swing CGI开发、Applet、容器布局以及图形编程等技术;企业级Java技术部分讨论了JDBC API、EJB体系结构的基础知识、Java平台安全方案以及...

    Java中瘦锁的应用

    瘦锁技术在Java虚拟机(JVM)中实现的基础是细粒度锁(Fine-Grained Locking),它允许对共享资源进行更精确的锁定。通过缩小锁的范围,即只锁定真正需要同步的代码块,可以减少不必要的锁争用和等待时间。这种技术...

    java实现windows文件系统操作监控

    6. **文件保护**:为了保护文件,可以设定访问权限或者使用文件锁。Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建...

    自己用JAVA做的一个多线程文件服务器

    2. **多线程**:文件服务器通常需要处理并发请求,因此多线程技术是核心。Java提供了Thread类和Runnable接口来创建和管理线程,通过线程池(如ExecutorService)可以有效地管理和调度线程资源。 3. **网络编程**:...

    java web开发技术大全2 z02 pdf

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

Global site tag (gtag.js) - Google Analytics