zoukankan      html  css  js  c++  java
  • 文件加锁

    文件加锁
         可以对同步访问的共享资源文件进行加锁,不过竞争同一个文件的两个线程可能在不同的虚拟机上;或者是一个是Java线程,另一个是操作系统中其他的某个本地线程,文件锁对其他操作系统进程是可见的,因为Java的问价加锁直接映射到了本地操作系统的加锁工具。

    package solutions;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.channels.FileLock;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Created by Administrator on 2016/3/14.
     */
    public class FileLocking {
        public static void main(String[] args) throws IOException,InterruptedException{
            FileOutputStream fos=new FileOutputStream("src/solutions/hu.txt");
            //试图获取文件锁,也可以使用lock()方法来获取文件锁
            /*
            * tryLock()是非阻塞式的,它设法获取锁,但是如果获取不到(当其他的一些进程已经持有相同的锁并且不共享),它
            *  将直接从方法调用返回。
            *  lock()则是阻塞式的,它要阻塞进程直至锁可以获得,或调用lock()的线程中断,或调用lock()的通道关闭。
            * */
            FileLock fl=fos.getChannel().tryLock();
            if(fl!=null){
                System.out.println("Locked File");
                TimeUnit.MILLISECONDS.sleep(100);
                fl.release();
                System.out.println("Release Lock");
            }
            fos.close();
        }
    }
  • 相关阅读:
    alg--动态规划(dynamic planning)
    alg--分治法
    汇编-理解call,ret
    汇编--实验7
    leetCode笔记--binary tree
    leetCode笔记--(1)
    C#获取当前路径的方法如下
    VS2013 快捷键 与 RESHARPER 冲突
    使用Visual Studio 2013进行单元测试--初级篇
    VS 插件
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5276753.html
Copyright © 2011-2022 走看看