簡體   English   中英

同步JAVA-文件鎖定

[英]Synchronisation JAVA - File lock

我有以下代碼,它是多線程服務器代碼的一部分:

 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中的“同步”,但是我沒有想到如何將其集成到我的代碼中,我想在用戶使用它時鎖定文件“ key”,因此如果另一個用戶無法同時訪問它,有人已經在使用它了(出於安全原因),有什么想法嗎?

如果文件不是在其他地方使用,而是此代碼,則可以僅同步塊:

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) {...} )或使用一個鎖( doc在這里 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM