我有两个问题。我有一个多线程Java应用程序。当一个线程在一个键上调用getAndLock时,紧接着另一个线程在同一个键上调用getAndLock会发生什么?


第二个线程是否会自动阻塞,直到第一个线程释放了
锁?还是函数调用返回的CAS值为空?还是会抛出
例外?
如果第一个线程删除了密钥(整个文档),则将发生什么情况?
第二个线程?

最佳答案

(盐粒;我只对pecl-memcache语义非常熟悉)。

documentation表示它将尝试获取锁定三秒钟,然后返回OperationTimeoutException。 (如mikeweid所指出的),如果锁已经存在,则应立即返回并指示错误消息中存在该键,但是在这种情况下,文档未说明抛出了什么异常/错误。

至于第二个问题,如果第一个线程删除了一个键,它应该返回,就好像那个键不存在一样。在这种情况下null

10-06 05:39