使用线程读取或写入文件

时间:2013-04-24 09:35:40

标签: java synchronization thread-safety

我想要读写文件的程序。我想一次执行任何一个操作(读或写)。如果我正在读文件,写请求等待直到读操作完成。如果我写文件然后读请求等待直到写操作完成

2 个答案:

答案 0 :(得分:0)

您必须使用互斥锁。它是一种结构,一次只允许一个线程使用一个资源。看看ReentrantLock。

答案 1 :(得分:0)

创建一个类来进行读写,并使其完全同步,例如:

public class MyFileManager{
  private static MyFileManager instance;

  public static synchronized MyFileManager getInstance(){ // to use as singelton
    if(instance==null){
      instance=new MyFileManager();
    }
    return instance;
  }

  private MyFileManager(){} // to avoid creation of new instances


 public synchronized String read(File f){
   //Do Something
 }

 public synchronized void write(File f, String s){
   //Do Something
 }

}

现在当你想要读或写时,只需做

String s=MyFileManager.getInstance.read(myfile);
MyFileManager.getInstance.write(myfile,"hello world!");