6

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();

最後にセマフォを解放していますが、特定の理由でコードの実行が停止したり、終了したり、サーバーを停止したりする可能性があります。その後、取得したセマフォは決して解放されません。

このシナリオを処理するには、特定の時間後に自動的に解放されるセマフォが必要です。

4

1 に答える 1