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 ...
10. Java文件拷贝方式:Java提供了多种文件拷贝方式,包括FileInputStream和FileOutputStream、FileChannel、NIO等,其中使用NIO的transferFrom方法效率最高。 11. 设计模式:常见的设计模式包括单例模式、工厂模式...
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
* 直接内存(Direct Memory):用于 NIO 的缓冲区分配,避免在系统内存与 JVM 堆内存之间拷贝的开销。 * 线程私有内存(Thread Private Memory):包括程序计数器、JVM 栈、本地方法栈等。 2. 对象的内存布局 ...
根据提供的文件内容,我们将详细阐述Java基础面经相关的知识点,包括Java基础、集合类、锁机制、Java多线程等核心概念。 ### Java基础 1. **基本数据类型和装箱拆箱**: Java有8种基本数据类型,包括4个整型...
7. 直接内存:不是JVM内存结构的一部分,它由操作系统直接管理,主要用于NIO操作,可以提高IO性能,但使用不当容易导致内存泄漏。 8. 类加载器:负责将.class文件加载到JVM中执行,主要分为启动类加载器、扩展类...
- **持久化存储:** 将对象保存到磁盘文件中。 - **对象缓存:** 在内存中缓存对象状态。 #### 四十五、实现Serializable接口的原因 - **实现Serializable接口是Java对象序列化的前提条件。** - **允许对象被序列化...
- 解决方案包括使用线程安全的集合如`Vector`, `ConcurrentHashMap`等,或者手动加锁。 3. **HashSet、LinkedHashSet和TreeSet的区别:** - `HashSet`不保证任何特定的顺序。 - `LinkedHashSet`按插入顺序保存...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
根据提供的文件内容,下面将详细介绍相关知识点: 1. **线程池**: - 线程池是多线程技术中经常使用到的一个工具,它能够有效管理线程资源,重用线程,减少创建和销毁线程的开销。 - 常用的线程池包括:`...
- **按顺序加锁**:确保所有线程按照相同的顺序获取锁。 - **使用定时锁**:尝试获取锁时设定超时时间,避免无限期等待。 - **避免嵌套锁**:尽量减少锁的嵌套使用,简化锁的管理。 #### 三、分布式系统与微服务...