amazon-web-services - 如何让Redisson Semaphore自动释放

标签 amazon-web-services redis semaphore redisson

我正在使用 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();

我在最后释放了信号量,但有时我的代码执行可能会停止、被终止或由于特定原因我停止了服务器。那么获取的信号量将永远不会被释放。

为了处理这种情况我想要信号量,它会在特定时间后自动释放。

最佳答案

您应该按如下方式使用 PermitExpirableSemaphore:

RPermitExpirableSemaphore semaphore =redisson.getPermitExpirableSemaphore("mySemaphore"); 

// acquire permit with lease time = 2 seconds 
String permitId = semaphore.acquire(2, TimeUnit.SECONDS);
// ... Do something 
semaphore.release(permitId);

信号量默认2秒后自动释放。

关于amazon-web-services - 如何让Redisson Semaphore自动释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982869/

相关文章:

amazon-web-services - AWS S3 DeletionPolicy - 创建后添加并验证设置

javascript - 我可以仅使用 html 页面查询 dynamodb 表吗?

.net - 从字符串构造 C# Type 以进行序列化/反序列化的最佳方法

c - 在多线程共享进程中,原子操作似乎比信号量操作慢

operating-system - 修改为 "Implementing an N process barrier using semaphores"

java - 使用信号量来控制线程数量

java - 如何使用亚马逊s3路径在java中列出亚马逊s3文件夹

python - Asyncpg 和 AWS Lambda

php - Redis存储数据过期未设置过期时间

django - 使用无服务器架构时应用程序缓存是否冗余(例如通过 python Zappa 的 Amazon Lambda)