1

2つの質問があります。マルチスレッドのJavaアプリケーションがあります。スレッドがキーでgetAndLockを呼び出し、その直後に別のスレッドが同じキーでgetAndLockを呼び出すとどうなりますか?

  1. 最初のスレッドがロックを解除するまで、2番目のスレッドは自動的にブロックされますか?または、関数呼び出しはnullのCAS値で返されますか?または、例外をスローしますか?

  2. 最初のスレッドがキー(ドキュメント全体)を削除した場合、2番目のスレッドはどうなりますか?

4

1 に答える 1

0

(塩の粒;私はpecl-memcacheセマンティクスに精通しているだけです)。

ドキュメントには、3秒間ロックを取得してから、に戻ると記載されていますOperationTimeoutException。(mikeweidが指摘しているように)ロックがすでに存在する場合は、すぐに戻ってエラーメッセージにキーが存在することを示す必要がありますが、この場合にスローされる例外/エラーについてはドキュメントに記載されていません。

2番目の質問については、最初のスレッドがキーを削除した場合、そのキーが存在しなかったかのように返されるはずです。この場合null

于 2013-03-27T04:46:09.523 に答える