Tag: 锁定

线程 – 为什么锁定必须遵循try和finally

锁总是后跟一个try / finally块,为什么? ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock(); Lock read = readWriteLockBitmap.readLock(); Lock write = readWriteLockBitmap.writeLock(); int shared = 0; public void function1(){ read.lock(); try{ //reading shared int } finally{ read.unlock(); } } public void function 2(){ write.lock(); try{ //modify shared int } finally{ write.unlock(); } } 为什么有这个try / finally块而不是简单地编写代码如下: ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock(); […]

FileLock如何工作?

我一直在尝试使用FileLock获取对文件的独占访问权限,以便: 删除它 重命名 写信给它 因为在Windows上(至少),您似乎无法删除,重命名或写入已在使用的文件。 我写的代码看起来像这样: import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; public abstract class LockedFileOperation { public void execute(File file) throws IOException { if (!file.exists()) { throw new FileNotFoundException(file.getAbsolutePath()); } FileChannel channel = new RandomAccessFile(file, “rw”).getChannel(); try { // Get an exclusive lock on the whole file FileLock […]

检查文件是否在Java中被锁定

我的Java程序想要读取一个文件,该文件可以被写入其中的另一个程序锁定。 我需要检查文件是否被锁定,如果是,请等待它是免费的。 我该如何实现这一目标? Java程序在Windows 2000服务器上运行。

如何通过密钥获取锁定

在不锁定整个集合的情况下,防止在键值集中并发更新一个记录的最佳方法是什么? 从语义上讲,我正在寻找某种键的锁定(理想情况下,Java实现,但不一定): interface LockByKey { void lock(String key); // acquire an exclusive lock for a key void unlock(String key); // release lock for a key } 此锁用于同步对远程存储的访问,因此某些同步Java集合不是一个选项。