51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

wsl1使用Java文件锁异常

代码如下

* 
                          01
  •                     02
    
  •                     03
    
  •                     04
    
  •                     05
    
  •                     06
    
  •                     07
    
  •                     08
    
  •                     09
    
  •                     10
    
  •                     11
    
  •                     12
    
  •                     13
    
  •                     14
    
  •                     15
    
  •                     16
    
  •                     17
    
                    public void writeWithFileLock(File tempFile){
    

    try (FileChannel workPathResourceMd5Lock = new RandomAccessFile(tempFile,"rw").getChannel()) { log.info("start to lock"); workPathResourceMd5Lock.lock(0, 10, false); log.info("locked"); workPathResourceMd5Lock.truncate(0); workPathResourceMd5Lock.write(ByteBuffer.wrap("1111".getBytes(StandardCharsets.UTF_8))); Thread.sleep(10000); } catch (Exception ex){ log.error("Error", ex); }

    try { log.info("finished.{}:{}", tempFile.getAbsolutePath(), FileUtils.readFileToString(tempFile, StandardCharsets.UTF_8)); } catch (IOException e) { log.error("Error.", e); }

    } </code> </pre>

使用上述代码,多进程运行测试文件锁

<br />

表现:

  1. windows下,两个进程一个先获取文件锁,进程2则等待1 try-catch段执行完成,才开始运行

  2. idea运行到wsl上,两个进程先后进入, 文件锁未生效

<br />

环境版本:

wsl1 on windows

Microsoft Windows [版本 10.0.18362.295]

wsl版本

> DISTRIB_ID=Ubuntu > >
> DISTRIB_RELEASE=20.04 > >
> DISTRIB_CODENAME=focal > >
> DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS" > >

<br />

相关问题 {#%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98}

  1. https://github.com/microsoft/WSL/issues/1927

<br />

<br />

赞(8)
未经允许不得转载:工具盒子 » wsl1使用Java文件锁异常