文件加锁

文件加锁
     可以对同步访问的共享资源文件进行加锁,不过竞争同一个文件的两个线程可能在不同的虚拟机上;或者是一个是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();
    }
}
原文地址:https://www.cnblogs.com/hujingwei/p/5276753.html