package com.io; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.channels.OverlappingFileLockException; import java.util.Calendar; public class LockFile extends Thread{ private String sign=null; public LockFile(String sign){ this.sign=sign; } public void run(){ Calendar calstart=Calendar.getInstance(); File file=new File("F:/io.txt"); try { sleep(2000); //对该文件加锁 FileOutputStream out=new FileOutputStream(file,true); FileChannel fcout=out.getChannel(); FileLock flout=null; while(true){ try{ flout=fcout.tryLock(); }catch(OverlappingFileLockException lo){ System.out.println("有其他线程正在操作该文件~~~~~~~~~~~"); flout=null; } if(flout!=null){ System.out.println("获得锁"); break; } else{ System.out.println("有其他线程正在操作该文件,当前线程休眠1秒"); sleep(1000); } } for(int i=1;i<=100;i++){ StringBuffer sb=new StringBuffer(); sb.append(sign+":这是第"+i+"行"); out.write(sb.toString().getBytes("utf-8")); } flout.release(); fcout.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e){ e.printStackTrace(); } } }
java 给文件加锁_java文件加锁
最新推荐文章于 2024-07-24 17:30:28 发布