加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java和python进程可以独占锁定linux上的相同文件

发布时间:2020-12-14 19:23:53 所属栏目:Java 来源:网络整理
导读:我有一个 java应用程序和一个python启动器. java应用程序使用此代码锁定文件以避免多次启动: java.nio.channels.FileLock lock = lockWrapper.getChannel().tryLock();if (lock == null) { logger.info("Anotheris already running");}lock.release();stati
我有一个 java应用程序和一个python启动器. java应用程序使用此代码锁定文件以避免多次启动:
java.nio.channels.FileLock lock = lockWrapper.getChannel().tryLock();
if (lock == null) {
     logger.info("Anotheris already running");
}
lock.release();
staticLock = lockWrapper.getChannel().lock();

python启动程序试图用fcntl锁定同一个文件,它可以.两个java进程不能这样做,并且两个python进程都不能独占锁定在同一个文件上.但是java和python可以在任何方向上.
我正在使用openjdk 6和python2.7的xubuntu我使用portalocker进行python.

lockfile =open(lockfilename,'w+')
    portalocker.lock(lockfile,portalocker.LOCK_EX| portalocker.LOCK_NB)

在win7上也可以正常工作.

解决方法

我得到了同事的答案,这很简单. Java不使用POSIX锁,但是python可以.所以他们不能互操作……

实际上他们可以,但只有当一个人可以强制两个运行时使用相同的锁定机制.但是这迫使你对它进行硬编码,使代码变得脆弱并且非常依赖于平台.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读