<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                <!-- File Locking --> ## 文件鎖定 文件鎖定可同步訪問,因此文件可以共享資源。但是,爭用同一文件的兩個線程可能位于不同的 JVM 中,或者一個可能是 Java 線程,另一個可能是操作系統中的本機線程。文件鎖對其他操作系統進程可見,因為 Java 文件鎖定直接映射到本機操作系統鎖定工具。 ```java // newio/FileLocking.java // (c)2017 MindView LLC: see Copyright.txt // 我們無法保證該代碼是否適用于其他用途。 // 訪問 http://OnJava8.com 了解更多本書信息。 import java.nio.channels.*; import java.util.concurrent.*; import java.io.*; public class FileLocking { public static void main(String[] args) { try( FileOutputStream fos = new FileOutputStream("file.txt"); FileLock fl = fos.getChannel().tryLock() ) { if(fl != null) { System.out.println("Locked File"); TimeUnit.MILLISECONDS.sleep(100); fl.release(); System.out.println("Released Lock"); } } catch(IOException | InterruptedException e) { throw new RuntimeException(e); } } } ``` 輸出結果: ``` Locked File Released Lock ``` 通過調用 **FileChannel** 上的 `tryLock()` 或 `lock()`,可以獲得整個文件的 **FileLock**。(**SocketChannel**、**DatagramChannel** 和 **ServerSocketChannel** 不需要鎖定,因為它們本質上是單進程實體;通常不會在兩個進程之間共享一個網絡套接字)。 `tryLock()` 是非阻塞的。它試圖獲取鎖,若不能獲取(當其他進程已經持有相同的鎖,并且它不是共享的),它只是從方法調用返回。 `lock()` 會阻塞,直到獲得鎖,或者調用 `lock()` 的線程中斷,或者調用 `lock()` 方法的通道關閉。使用 **FileLock.**`release()` 釋放鎖。 還可以使用 > `tryLock(long position, long size, boolean shared)` 或 > `lock(long position, long size, boolean shared)` 鎖定文件的一部分,鎖住 **size-position** 區域。第三個參數指定是否共享此鎖。 雖然零參數鎖定方法適應文件大小的變化,但是如果文件大小發生變化,具有固定大小的鎖不會發生變化。如果從一個位置到另一個位置獲得一個鎖,并且文件的增長超過了 position + size ,那么超出 position + size 的部分沒有被鎖定。零參數鎖定方法鎖定整個文件,即使它在增長。 底層操作系統必須提供對獨占鎖或共享鎖的支持。如果操作系統不支持共享鎖并且對一個操作系統發出請求,則使用獨占鎖。可以使用 **FileLock.**`isShared()` 查詢鎖的類型(共享或獨占)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看