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();
}
}
分享到:
相关推荐
当然,实际应用中可能需要考虑更多因素,如错误处理、文件锁、并发访问等。在大型项目中,你可能会选择使用Apache Commons IO库或Java 8的Stream API来简化文件操作。 总的来说,“简单java文件过滤”涉及了Java中...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是一个高性能的键值数据库,常被用作分布式系统的缓存或数据存储。Redisson是基于...
《JAVA核心技术》是一本深入探讨Java编程语言的权威著作,高清扫描版则为读者提供了清晰易读的电子阅读体验。这本书全面覆盖了Java的核心概念和技术,对于初学者和经验丰富的开发者来说,都是不可或缺的参考资料。 ...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
Java的`java.util.concurrent`包提供了锁和同步原语,如`synchronized`关键字、`ReentrantLock`和`Semaphore`,用于管理并发访问。 7. **文件系统设计**:一个完整的文件系统需要考虑目录结构、文件命名规则、文件...
该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供了文件上传、文件处理、文件存储等功能。通过该项目,开发者可以学习并实践Java技术的应用,为后续的Web开发奠定...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...
3. **I/O流**:Java的`java.io`和`java.nio`包提供了广泛的输入/输出流类,用于读写文件、处理网络数据以及在内存中传输数据。了解字节流、字符流、缓冲流、对象流和管道流的使用,以及NIO(非阻塞I/O)的概念,能...
2. Java I/O流的操作和NIO技术,让学习者能够处理文件读写、网络通信中的数据流。 3. 多线程编程和并发控制,教授如何在Java中创建和管理线程,以及使用锁、同步机制、并发集合等来提高程序的执行效率和稳定性。 4. ...
文件`ConnectOracle.java`可能包含了建立JDBC连接的代码。这通常涉及以下步骤: - 导入所需的JDBC库,如`import java.sql.Connection; import java.sql.DriverManager;` - 加载Oracle JDBC驱动,例如`Class.for...
文件锁、映射的I/O技术以及数据结构与集合;服务器端Java技术部分讨论了JFC/Swing CGI开发、Applet、容器布局以及图形编程等技术;企业级Java技术部分讨论了JDBC API、EJB体系结构的基础知识、Java平台安全方案以及...
瘦锁技术在Java虚拟机(JVM)中实现的基础是细粒度锁(Fine-Grained Locking),它允许对共享资源进行更精确的锁定。通过缩小锁的范围,即只锁定真正需要同步的代码块,可以减少不必要的锁争用和等待时间。这种技术...
6. **文件保护**:为了保护文件,可以设定访问权限或者使用文件锁。Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建...
2. **多线程**:文件服务器通常需要处理并发请求,因此多线程技术是核心。Java提供了Thread类和Runnable接口来创建和管理线程,通过线程池(如ExecutorService)可以有效地管理和调度线程资源。 3. **网络编程**:...
由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...