获得;未能创建锁";在Java中使用RocksDB执行并行写入时出现异常
我正在为RocksDb使用以下依赖项 rocksdbjni»3.5.1 下面是我从多个线程调用的代码获得;未能创建锁";在Java中使用RocksDB执行并行写入时出现异常,java,multithreading,rocksdb,Java,Multithreading,Rocksdb,我正在为RocksDb使用以下依赖项 rocksdbjni»3.5.1 下面是我从多个线程调用的代码 public static void test(){ try { RocksDB.loadLibrary(); RocksDB rocksDB = RocksDB.open("C:\\Users\\Downloads\\db"); if(rocksDB.get("abc".getBytes()) == null){
public static void test(){
try {
RocksDB.loadLibrary();
RocksDB rocksDB = RocksDB.open("C:\\Users\\Downloads\\db");
if(rocksDB.get("abc".getBytes()) == null){
rocksDB.put("abc".getBytes(),"cde".getBytes());
}else{
System.out.print(new String(rocksDB.get("abc".getBytes())));
}
rocksDB.close();
} catch (RocksDBException e) {
e.printStackTrace();
}
}
当并行调用上面的代码时,我得到“org.rocksdb.rocksdbeexception:无法创建锁文件:C:\Users\Downloads\db/lock:进程无法访问该文件,因为它正被另一个进程使用。”但当我在上面的代码上加锁(或同步方法)时,它工作正常
我想用RocksDB并行编写
谢谢。您应该创建一个
RocksDB
对象,并让您的线程共享它。它不是为每个线程创建的(并且不能共享同一个锁文件) 现在工作。我之前也试过同样的方法,但没有成功。