用CompletionHandler实现lock()方法
import java.io.IOException; import java.nio.channels.AsynchronousFileChannel; import java.nio.channels.CompletionHandler;/** 来 自 nowjava - 时代Java**/ import java.nio.channels.FileLock; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class Main { static Thread current; public static void main(String[] args) { Path path = Paths.get("C:/folder1/", "test.txt"); try (AsynchronousFileChannel asynchronousFileChannel = AsynchronousFileChannel .open(path, StandardOpenOption.READ, StandardOpenOption.WRITE)) { current = Thread.currentThread(); asynchronousFileChannel.lock("Lock operation status:", new CompletionHandler<FileLock, Object>() { @Override/* 来 自 时 代 J a v a 公 众 号 - N o w J a v a . c o m*/ public void completed(FileLock result, Object attachment) { System.out.println(attachment + " " + result.isValid()); if (result.isValid()) { try { result.release(); } catch (IOException ex) { System.err.println(ex); } } current.interrupt(); } @Override public void failed(Throwable exc, Object attachment) { System.out.println(attachment); System.out.println("Error:" + exc); current.interrupt();