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

前端之家收集整理的这篇文章主要介绍了Java和python进程可以独占锁定linux上的相同文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 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可以.所以他们不能互操作……

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

原文链接:https://www.f2er.com/java/444648.html

猜你在找的Java相关文章