7

さまざまなマシンが Redisson を介して共有ロックを取得するインフラストラクチャを作成しようとしています。ロックが取得されると、いくつかの非同期タスクが完了し、最後に、ジョブを終了すると、現在実行中のスレッドを介して Redisson ロックを解放していますが、次のエラーが表示されます

java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: xxxxx thread-id: 57

ということで、その意味はわかりますが、非同期作業をしたいので、取得スレッドを使って解放することができません。

Redisson ロックを使用しない方がよいですか? そのような非同期作業に最適なものは何ですか?

4

4 に答える 4

5

zapl が述べたように、Java ドキュメントは、これが Java ロックの適切な動作であることを示しています。Reddison の GitHub ページでこの問題について議論した後、Redisson Lock はそのために設計されたものではなく、Redisson Semaphore はまもなく非同期操作をサポートするように思われます。

当面は、単一のスレッドを割り当てて、すべてのロックとロック解除を実行する予定です。Redisson は非同期のノンブロッキング コールをサポートしているため、現時点ではこのソリューションが妥当と思われます。

于 2016-05-22T14:20:45.497 に答える