即使使用NOWAIT,PostgreSQL LOCK TABLE命令也会等待

时间:2018-11-29 09:08:43

标签: java postgresql java-ee locking

我的应用程序(JEE)中有一个进程(cron作业)。我有两个实例在两个不同的机器上运行。
我希望此Cron作业仅执行一次。我知道有很多方法可以做到这一点。但是我想使用数据库表Lock来做到这一点。

因此,此过程中要做的第一件事是在数据库中的某些表上获取LOCK。如果一个进程获得了锁,则另一个进程应立即中止。

我正在使用Postgresql(10.4)。这就是我代码中的内容

Statement statement = connection.createStatement();
statement.execute("LOCK TABLE crontable NOWAIT");

有了这个,我希望当一个进程获得锁时,其他进程将中止(根据文档https://www.postgresql.org/docs/10/sql-lock.html

但是当前正在发生的是,其他进程一直等到第一个进程释放锁。

我在这里想念东西吗?

0 个答案:

没有答案