RSemaphore を使用して特定のカウントを維持しています。以下をご覧ください:-
RSemaphore sem = redisson.getSemaphore("custid=10");
sem.trySetPermits(10);
try {
sem.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": Acquired permit");
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": Releasing permit");
sem.release();
最後にセマフォを解放していますが、特定の理由でコードの実行が停止したり、終了したり、サーバーを停止したりする可能性があります。その後、取得したセマフォは決して解放されません。
このシナリオを処理するには、特定の時間後に自動的に解放されるセマフォが必要です。