java核心学习(十九) javaNIO框架---文件锁

  

  在上一节提到的FileChannel中提供了lock()/tryLock()方法可以获得文件锁FileLock对象,从而锁定文件,这里的文件锁是进程级别的锁,而非线程锁。

  lock()方法是阻塞试的,当调用该方法且无法得到文件锁,程序将一直阻塞。

  tryLock()方法是非阻塞式的加锁方法,如果获得了文件锁,则该方法返回该文件锁,否则将返回null。

  文件锁分为共享锁和排他锁,当lock/tryLock方法的第三个参数为true时表明该锁是共享锁,共享锁允许多个进城来读取该文件,但阻止其他进程获得对该文件的排他锁,默认情况下该参数为false,即为排他锁。

  注意:1、文件锁是java虚拟机持有的,如果两个java程序使用同一个java虚拟机运行,则按们不能对同一个文件进行加锁

     2、某些平台上文件锁不是强制性的,所以并不起作用。。

     

时间: 2025-01-01 11:34:26

java核心学习(十九) javaNIO框架---文件锁的相关文章

java核心学习(十八) javaNIO框架---“块”模型的IO

一.java新IO概述 javaIO中的输入流和输出流都是通过字节的移动来处理的,面向流的输入输出系统一次只能处理一个字节,因此效率不高,而且传统的输入输出流是阻塞试的,也就是说当无法读到数据时,当前线程会被阻塞直到读取到有效数据才会继续运行. java1.4之后提供了一系列改进的输入输出类与方法,并且以NIO为基础改写了java.io包中的类,新增了满足NIO的功能. NIO采用内存映射文件的方式,java.nio中主要的包有: java.nio ,主要包含于Buffer相关的类: java.

“全栈2019”Java第三十九章:构造函数、构造方法、构造器

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第三十九章:构造函数.构造方法.构造器 下一章 "全栈2019"Java第四十章:this关键字 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&q

“全栈2019”Java第八十九章:接口中能定义内部类吗?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十九章:接口中能定义内部类吗? 下一章 "全栈2019"Java第九十章:内部类可以向上或向下转型吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

“全栈2019”Java多线程第十九章:死锁详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第十九章:死锁详解 下一章 "全栈2019"Java多线程第二十章:同步方法产生死锁的例子 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&q

Java Web总结十九Filter过滤器

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,Web开发人员通过Filter技术,对Web服务器管理的所有Web资源:例如Jsp,Servlet,静态图片文件或静态HTML文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.自动登录.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发Web应用时,如果编写的Java类实现了这个接口,则把这个Java类称之为过滤器Filter.通过

深度学习十大顶级框架

2015 年结束了,是时候看看 2016 年的技术趋势,尤其是关于深度学习方面.新智元在 2015 年底发过一篇文章<深度学习会让机器学习工程师失业吗?>,引起很大的反响.的确,过去一年的时间里,深度学习正在改变越来越多的人工智能领域.Google DeepMind 工程师 Jack Rae 预测说,过去被视为对于中型到大型数据集来说最佳的预测算法的那些模型(比如说提升决策树(Boosted Decision Trees)和随机森林)将会变得无人问津. 深度学习,或者更宽泛地说——使用联结主义

Java并发学习笔记(九)-原子类AtomicInteger

AtomicInteger能够保证对一个整型的操作是原子性.像i++这个操作不是原子操作,存在竞态条件,所以需要加锁,但是加锁的性能不高,如果仅仅为了对一个整数加1.我们来看下他的实现. private volatile int value; AtomicInteger本身持有一个整型变量,所有的操作都是基于这个变量的.变量由violate修饰,这个变量是保证可见性的,具体可见另一篇博客 Java并发学习笔记(六)-互斥性和内存可见性. 来看一下对value加1的操作 public final

java核心学习笔记(一) javaJDK目录阐述

本系列博客为原创博客,旨在学习整理之用,转载请注明出处,谢谢. java作为最成功的语言之一,有很多地方可以学习,不仅仅是语言的用法. 本次学习目标在于系统的从javaSE学起,学习java的理念思想,以及从代码层次直接学习javaSE和他的用法,以此来为将来学习java类库的编写.java开发框架以及javaEE.java虚拟机.javaWEB打下良好的基础,努力让编程成为一种思想,成为身体的一部分. 这次从头重新对java的学习,目的是要学习java的世界观和方法论,学习过程要符合哲学理论,

java核心学习(九) java基础类库之Scanner

从第九节开始,对java的基础类库进行初步学习,这些基础类其中的一些内容是java程序员的基本功 言归正传,开始学习.对于java类库的具体使用方法,可以在IDE里面查看源码和注释,也可以在官方网站查看文档,本学习只是简单过一边重点,并不会面面俱到. Scanner顾名思义就是一个扫描器,可以从文件.输入流.字符串解析数据. 在new Scanner时可以使用不同的构造器参数来创建不同数据源的Scanner,如Scanner sc = new Scanner(System.in)就是对标准输入流