import java.io.FileOutputStream;
import java.nio.channels.FileLock;
import java.util.concurrent.TimeUnit;
/**
*
* 文件加锁.
*
*/
public class FileLocking {
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("D:\\temp.tmp");
//tryLock是非阻塞式,未获得锁则直接返回
//lock是阻塞式的.
//tryLock(position, size, shared)可以部分锁定文件
//FileLock.isShared查询共享锁或独占锁
FileLock fl = fos.getChannel().tryLock();
if(fl != null){
System.out.println("Locked File");
TimeUnit.MILLISECONDS.sleep(100);
fl.release();
System.out.println("Release Lock");
}
if(fos != null){
fos.close();
}
}
}
分享到:
相关推荐
此外,`java.io.RandomAccessFile`类允许对文件进行随机访问,而`java.nio.file.Files`工具类则提供了一系列静态方法,简化了文件操作。 在多用户环境下,为了防止并发访问冲突,还需要引入锁机制。Java的`...
在Java中,文件操作是通过`java.io`和`java.nio`包提供的API来实现的。对于文件锁定,Java提供了一些内置的方法,如`FileChannel`类的`lock()`和`tryLock()`方法,这些方法可以帮助开发者在多线程环境中实现对文件的...
1. **JDK1.4**引入了NIO(New Input/Output),改善了I/O性能,支持内存映射和文件锁定。 2. **JDK1.5**引入了泛型,增强类型安全,自动装拆箱简化了代码。 3. **java.util.concurrent包**提供了高效的并发编程工具...
3. 并发安全:如果多个用户同时访问可能导致文件被并发修改,需要考虑加锁或者其他并发控制机制。 4. 性能优化:对于大量数据的读写,可以考虑使用流式处理或者NIO(非阻塞I/O)来提高效率。 以上就是关于在Java ...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
本文汇总了Java基础知识中的一些核心概念和技术,包括反射机制、多态、多线程同步控制、JVM运行时数据结构、堆内存异常定位、NIO、String不可变性以及Java关键字的深入解析。这些知识点不仅在面试和笔试中经常被考察...
2. **java.nio.channels.FileLock**:Java新I/O(NIO)中的类,允许对文件进行加锁操作,用于检测某个文件是否正被另一个进程占用,从而判断程序状态。 3. **ProcessBuilder与Process**:这两个类允许Java程序调用...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
根据提供的文件内容,我们将详细阐述Java基础面经相关的知识点,包括Java基础、集合类、锁机制、Java多线程等核心概念。 ### Java基础 1. **基本数据类型和装箱拆箱**: Java有8种基本数据类型,包括4个整型...
- **持久化存储:** 将对象保存到磁盘文件中。 - **对象缓存:** 在内存中缓存对象状态。 #### 四十五、实现Serializable接口的原因 - **实现Serializable接口是Java对象序列化的前提条件。** - **允许对象被序列化...
- 解决方案包括使用线程安全的集合如`Vector`, `ConcurrentHashMap`等,或者手动加锁。 3. **HashSet、LinkedHashSet和TreeSet的区别:** - `HashSet`不保证任何特定的顺序。 - `LinkedHashSet`按插入顺序保存...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
根据提供的文件内容,下面将详细介绍相关知识点: 1. **线程池**: - 线程池是多线程技术中经常使用到的一个工具,它能够有效管理线程资源,重用线程,减少创建和销毁线程的开销。 - 常用的线程池包括:`...
- **按顺序加锁**:确保所有线程按照相同的顺序获取锁。 - **使用定时锁**:尝试获取锁时设定超时时间,避免无限期等待。 - **避免嵌套锁**:尽量减少锁的嵌套使用,简化锁的管理。 #### 三、分布式系统与微服务...
1. **BIO、NIO和AIO**:阻塞I/O(BIO)、非阻塞I/O(NIO)和异步非阻塞I/O(AIO)分别代表了不同层次的I/O模型,Netty基于NIO实现高效网络通信。 2. **Netty组件**:包括`Channel`、`ChannelHandlerContext`、`Event...
* 直接内存(Direct Memory):用于 NIO 的缓冲区分配,避免在系统内存与 JVM 堆内存之间拷贝的开销。 * 线程私有内存(Thread Private Memory):包括程序计数器、JVM 栈、本地方法栈等。 2. 对象的内存布局 ...
10. **IO流的同步问题**:多线程读写文件时,需要确保对文件的访问是线程安全的,否则可能导致数据错乱。 11. **非阻塞IO**:NIO(New IO)提供了一种非阻塞的IO模型,通过选择器(Selector)可以监听多个通道...