0

我有以下代码,它是多线程服务器代码的一部分:

 File ff=new File("../key.txt");
       if(ff.exists())
         {
            try(
              BufferedReader br = new BufferedReader(new FileReader("..\key.txt"))) {



                for(String line2; (line2 = br.readLine()) != null; ) {


                    System.out.println("WE ARE READING 'KEY' ");
                    String a[]=line2.split("-");
                    k[i2]=a[0];
                    od[i2]=a[1];
                    ed[i2]=a[2];
                    System.out.println("key: "+k[i2]+" OD: "+od[i2]+" ED: "+ed[i2]);
                                                                      }
                                                                                }
         }

我已经读过java中的“同步”,但我没有猜到如何将它集成到我的代码中,我想在用户使用它时锁定文件“密钥”,以便另一个用户同时无法访问它如果其他人已经在使用它(出于安全原因),有什么想法吗?

4

1 回答 1

1

如果该文件未在其他地方使用,但此代码您可以只同步块:

synchronized {
   File ff=new File("../key.txt");
   if(ff.exists()) {
        BufferedReader br = new BufferedReader(new FileReader(ff))) {
        try(
           // YOUR STUFF WITH br HERE
        } finally {
           br.close();
        }

     }
 }

如果文件在代码的多个部分之间共享,您可能希望使用常量监视器对其进行同步(synchronized (MY_MONITOR_OBJECT) {...})或使用锁定(此处的文档)。

于 2014-05-21T18:38:28.930 回答