我有两个问题。我有一个多线程Java应用程序。当一个线程在一个键上调用getAndLock时会发生什么,并且在另一个线程在同一个键上调用getAndLock之后会立即发生什么?
第二个线程会自动阻塞,直到第一个线程释放出来 锁?或者,函数调用将以空CAS值返回吗?或者,它会抛出一个 例外
如果第一个线程删除了密钥(整个文档),那么会发生什么 第二个帖子?
答案 0 :(得分:0)
(一粒盐;我只是非常熟悉pecl-memcache语义)。
documentation表示它会尝试获取锁定三秒钟,然后返回OperationTimeoutException
。 (正如mikeweid指出的那样)如果锁已经存在,它应该立即返回并指示错误消息中存在该键,但文档没有说明在这种情况下抛出了什么异常/错误。
至于第二个问题,如果第一个线程删除了一个键,它应该返回,就好像该键从不存在一样;在这种情况下null
。