当前位置: 首页 > news >正文

深圳营销网站建设公司排名中国纪检监察报电子版在线阅读

深圳营销网站建设公司排名,中国纪检监察报电子版在线阅读,视觉传达设计主要学什么,安徽鸿顺鑫城建设集团网站一、锁定基于Redis的Java分布式可重入锁对象#xff0c;并实现了锁接口。如果获取锁的Redisson实例崩溃#xff0c;则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁看门狗#xff0c;当锁持有者Redisson实例处于活动状态时#xff0c;它会延长锁的到期时间…一、锁定基于Redis的Java分布式可重入锁对象并实现了锁接口。如果获取锁的Redisson实例崩溃则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁看门狗当锁持有者Redisson实例处于活动状态时它会延长锁的到期时间。默认情况下锁看门狗超时为30秒可以通过Config.lockWatchdogTimeout设置进行更改。可以定义锁获取期间的leaseTime参数。在指定的时间间隔后锁定的锁将自动释放。RLock对象的行为符合Java Lock规范。这意味着只有锁所有者线程才能解锁它否则将引发IllegalMonitorStateException。否则请考虑使用RSemaphore对象。代码示例RLock lock redisson.getLock(myLock);// traditional lock method lock.lock();// or acquire lock and automatically unlock it after 10 seconds lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); if (res) {try {...} finally {lock.unlock();} }异步接口用法的代码示例RLock lock redisson.getLock(myLock);RFutureVoid lockFuture lock.lockAsync();// or acquire lock and automatically unlock it after 10 seconds RFutureVoid lockFuture lock.lockAsync(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds RFutureBoolean lockFuture lock.tryLockAsync(100, 10, TimeUnit.SECONDS);lockFuture.whenComplete((res, exception) - {// ...lock.unlockAsync(); });反应式接口用法的代码示例RedissonReactiveClient redisson redissonClient.reactive(); RLockReactive lock redisson.getLock(myLock);MonoVoid lockMono lock.lock();// or acquire lock and automatically unlock it after 10 seconds MonoVoid lockMono lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds MonoBoolean lockMono lock.tryLock(100, 10, TimeUnit.SECONDS);lockMono.doOnNext(res - {// ... }) .doFinally(lock.unlock()) .subscribe();RxJava3 接口使用的代码示例RedissonRxClient redisson redissonClient.rxJava(); RLockRx lock redisson.getLock(myLock);Completable lockRes lock.lock();// or acquire lock and automatically unlock it after 10 seconds Completable lockRes lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds SingleBoolean lockRes lock.tryLock(100, 10, TimeUnit.SECONDS);lockRes.doOnSuccess(res - {// ... }) .doFinally(lock.unlock()) .subscribe();二、公平锁定基于Redis的分布式可重入公平Java锁对象实现了锁接口。公平锁保证线程将按照请求的顺序获取它。所有等待的线程都将排队如果某个线程已死亡Redisson将等待其返回5秒。例如如果5个线程由于某种原因而死亡那么延迟将为25秒。如果获取锁的Redisson实例崩溃则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁看门狗当锁持有者Redisson实例处于活动状态时它会延长锁的到期时间。默认情况下锁看门狗超时为30秒可以通过Config.lockWatchdogTimeout设置进行更改。可以定义锁获取期间的leaseTime参数。在指定的时间间隔后锁定的锁将自动释放。RLock对象的行为符合Java Lock规范。这意味着只有锁所有者线程才能解锁它否则将引发IllegalMonitorStateException。否则请考虑使用RSemaphore对象。代码示例RLock lock redisson.getFairLock(myLock);// traditional lock method lock.lock();// or acquire lock and automatically unlock it after 10 seconds lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); if (res) {try {...} finally {lock.unlock();} }异步接口用法的代码示例RLock lock redisson.getFairLock(myLock);RFutureVoid lockFuture lock.lockAsync();// or acquire lock and automatically unlock it after 10 seconds RFutureVoid lockFuture lock.lockAsync(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds RFutureBoolean lockFuture lock.tryLockAsync(100, 10, TimeUnit.SECONDS);lockFuture.whenComplete((res, exception) - {// ...lock.unlockAsync(); });Reactive接口 用法的代码示例:RedissonReactiveClient redisson redissonClient.reactive(); RLockReactive lock redisson.getFairLock(myLock);MonoVoid lockMono lock.lock();// or acquire lock and automatically unlock it after 10 seconds MonoVoid lockMono lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds MonoBoolean lockMono lock.tryLock(100, 10, TimeUnit.SECONDS);lockMono.doOnNext(res - {// ... }) .doFinally(lock.unlock()) .subscribe();RxJava3 接口使用的代码示例RedissonRxClient redisson redissonClient.rxJava(); RLockRx lock redisson.getFairLock(myLock);Completable lockRes lock.lock();// or acquire lock and automatically unlock it after 10 seconds Completable lockRes lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds SingleBoolean lockRes lock.tryLock(100, 10, TimeUnit.SECONDS);lockRes.doOnSuccess(res - {// ... }) .doFinally(lock.unlock()) .subscribe();三、多重锁基于Redis的分布式MultiLock对象允许将Lock对象分组并将其作为单个锁处理。每个RLock对象可能属于不同的Redisson实例。如果获取MultiLock的Redisson实例崩溃那么这样的MultiLock可能会永远挂在获取状态。为了避免这种Redisson维护锁看门狗当锁持有者Redisson实例处于活动状态时它会延长锁的到期时间。默认情况下锁看门狗超时为30秒可以通过Config.lockWatchdogTimeout设置进行更改。可以定义锁获取期间的leaseTime参数。在指定的时间间隔后锁定的锁将自动释放。MultiLock对象的行为符合Java Lock规范。这意味着只有锁所有者线程才能解锁它否则将引发IllegalMonitorStateException。否则请考虑使用RSemaphore对象。代码示例RLock lock1 redisson1.getLock(lock1); RLock lock2 redisson2.getLock(lock2); RLock lock3 redisson3.getLock(lock3);RLock multiLock anyRedisson.getMultiLock(lock1, lock2, lock3);// traditional lock method multiLock.lock();// or acquire lock and automatically unlock it after 10 seconds multiLock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds boolean res multiLock.tryLock(100, 10, TimeUnit.SECONDS); if (res) {try {...} finally {multiLock.unlock();} }异步接口用法的代码示例RLock lock1 redisson1.getLock(lock1); RLock lock2 redisson2.getLock(lock2); RLock lock3 redisson3.getLock(lock3);RLock multiLock anyRedisson.getMultiLock(lock1, lock2, lock3);RFutureVoid lockFuture multiLock.lockAsync();// or acquire lock and automatically unlock it after 10 seconds RFutureVoid lockFuture multiLock.lockAsync(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds RFutureBoolean lockFuture multiLock.tryLockAsync(100, 10, TimeUnit.SECONDS);lockFuture.whenComplete((res, exception) - {// ...multiLock.unlockAsync(); }); 反应式接口用法的代码示例RedissonReactiveClient anyRedisson redissonClient.reactive();RLockReactive lock1 redisson1.getLock(lock1); RLockReactive lock2 redisson2.getLock(lock2); RLockReactive lock3 redisson3.getLock(lock3);RLockReactive multiLock anyRedisson.getMultiLock(lock1, lock2, lock3);MonoVoid lockMono multiLock.lock();// or acquire lock and automatically unlock it after 10 seconds MonoVoid lockMono multiLock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds MonoBoolean lockMono multiLock.tryLock(100, 10, TimeUnit.SECONDS);lockMono.doOnNext(res - {// ... }) .doFinally(multiLock.unlock()) .subscribe();RxJava3 接口使用的代码示例RedissonRxClient anyRedisson redissonClient.rxJava();RLockRx lock1 redisson1.getLock(lock1); RLockRx lock2 redisson2.getLock(lock2); RLockRx lock3 redisson3.getLock(lock3);RLockRx multiLock anyRedisson.getMultiLock(lock1, lock2, lock3);Completable lockRes multiLock.lock();// or acquire lock and automatically unlock it after 10 seconds Completable lockRes multiLock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds SingleBoolean lockRes multiLock.tryLock(100, 10, TimeUnit.SECONDS);lockRes.doOnSuccess(res - {// ... }) .doFinally(multiLock.unlock()) .subscribe();四、读写锁定基于Redis的Java分布式可重入读写锁对象实现了读写锁接口。读和写锁都实现RLock接口。只允许有多个ReadLock所有者和一个WriteLock所有者。如果获取锁的Redisson实例崩溃则此类锁可能会在获取状态下永久挂起。为了避免这种Redisson维护锁看门狗当锁持有者Redisson实例处于活动状态时它会延长锁的到期时间。默认情况下锁看门狗超时为30秒可以通过Config.lockWatchdogTimeout设置进行更改。此外Redisson允许在获取锁期间指定leaseTime参数。在指定的时间间隔后锁定的锁将自动释放。RLock对象的行为符合Java Lock规范。这意味着只有锁所有者线程才能解锁它否则将引发IllegalMonitorStateException。否则请考虑使用RSemaphore对象。代码示例RReadWriteLock rwlock redisson.getReadWriteLock(myLock);RLock lock rwlock.readLock(); // or RLock lock rwlock.writeLock();// traditional lock method lock.lock();// or acquire lock and automatically unlock it after 10 seconds lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); if (res) {try {...} finally {lock.unlock();} }异步接口用法的代码示例RReadWriteLock rwlock redisson.getReadWriteLock(myLock);RLock lock rwlock.readLock(); // or RLock lock rwlock.writeLock();RFutureVoid lockFuture lock.lockAsync();// or acquire lock and automatically unlock it after 10 seconds RFutureVoid lockFuture lock.lockAsync(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds RFutureBoolean lockFuture lock.tryLockAsync(100, 10, TimeUnit.SECONDS);lockFuture.whenComplete((res, exception) - {// ...lock.unlockAsync(); }); 反应式接口用法的代码示例RedissonReactiveClient redisson redissonClient.reactive();RReadWriteLockReactive rwlock redisson.getReadWriteLock(myLock);RLockReactive lock rwlock.readLock(); // or RLockReactive lock rwlock.writeLock();MonoVoid lockMono lock.lock();// or acquire lock and automatically unlock it after 10 seconds MonoVoid lockMono lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds MonoBoolean lockMono lock.tryLock(100, 10, TimeUnit.SECONDS);lockMono.doOnNext(res - {// ... }) .doFinally(lock.unlock()) .subscribe();RxJava3 接口使用的代码示例RedissonRxClient redisson redissonClient.rxJava();RReadWriteLockRx rwlock redisson.getReadWriteLock(myLock);RLockRx lock rwlock.readLock(); // or RLockRx lock rwlock.writeLock();Completable lockRes lock.lock();// or acquire lock and automatically unlock it after 10 seconds Completable lockRes lock.lock(10, TimeUnit.SECONDS);// or wait for lock aquisition up to 100 seconds // and automatically unlock it after 10 seconds SingleBoolean lockRes lock.tryLock(100, 10, TimeUnit.SECONDS);lockRes.doOnSuccess(res - {// ... }) .doFinally(lock.unlock()) .subscribe();五、信号量基于Redis的分布式Java信号量对象类似于信号量对象。可以在使用前初始化但这不是必需的通过trySetPermissionspermissions方法获得可用的许可量。代码示例RSemaphore semaphore redisson.getSemaphore(mySemaphore);// acquire single permit semaphore.acquire();// or acquire 10 permits semaphore.acquire(10);// or try to acquire permit boolean res semaphore.tryAcquire();// or try to acquire permit or wait up to 15 seconds boolean res semaphore.tryAcquire(15, TimeUnit.SECONDS);// or try to acquire 10 permit boolean res semaphore.tryAcquire(10);// or try to acquire 10 permits or wait up to 15 seconds boolean res semaphore.tryAcquire(10, 15, TimeUnit.SECONDS); if (res) {try {...} finally {semaphore.release();} }异步接口用法的代码示例RSemaphore semaphore redisson.getSemaphore(mySemaphore);// acquire single permit RFutureVoid acquireFuture semaphore.acquireAsync();// or acquire 10 permits RFutureVoid acquireFuture semaphore.acquireAsync(10);// or try to acquire permit RFutureBoolean acquireFuture semaphore.tryAcquireAsync();// or try to acquire permit or wait up to 15 seconds RFutureBoolean acquireFuture semaphore.tryAcquireAsync(15, TimeUnit.SECONDS);// or try to acquire 10 permit RFutureBoolean acquireFuture semaphore.tryAcquireAsync(10);// or try to acquire 10 permits or wait up to 15 seconds RFutureBoolean acquireFuture semaphore.tryAcquireAsync(10, 15, TimeUnit.SECONDS);acquireFuture.whenComplete((res, exception) - {// ...semaphore.releaseAsync(); });反应式接口用法的代码示例RedissonReactiveClient redisson redissonClient.reactive();RSemaphoreReactive semaphore redisson.getSemaphore(mySemaphore);// acquire single permit MonoVoid acquireMono semaphore.acquire();// or acquire 10 permits MonoVoid acquireMono semaphore.acquire(10);// or try to acquire permit MonoBoolean acquireMono semaphore.tryAcquire();// or try to acquire permit or wait up to 15 seconds MonoBoolean acquireMono semaphore.tryAcquire(15, TimeUnit.SECONDS);// or try to acquire 10 permit MonoBoolean acquireMono semaphore.tryAcquire(10);// or try to acquire 10 permits or wait up to 15 seconds MonoBoolean acquireMono semaphore.tryAcquire(10, 15, TimeUnit.SECONDS);acquireMono.doOnNext(res - {// ... }) .doFinally(semaphore.release()) .subscribe();RxJava3 接口使用的代码示例RedissonRxClient redisson redissonClient.rxJava();RSemaphoreRx semaphore redisson.getSemaphore(mySemaphore);// acquire single permit Completable acquireRx semaphore.acquire();// or acquire 10 permits Completable acquireRx semaphore.acquire(10);// or try to acquire permit SingleBoolean acquireRx semaphore.tryAcquire();// or try to acquire permit or wait up to 15 seconds SingleBoolean acquireRx semaphore.tryAcquire(15, TimeUnit.SECONDS);// or try to acquire 10 permit SingleBoolean acquireRx semaphore.tryAcquire(10);// or try to acquire 10 permits or wait up to 15 seconds SingleBoolean acquireRx semaphore.tryAcquire(10, 15, TimeUnit.SECONDS);acquireRx.doOnSuccess(res - {// ... }) .doFinally(semaphore.release()) .subscribe();
http://www.w-s-a.com/news/808967/

相关文章:

  • 织梦网站开发兼职wordpress 中间截取缩略图
  • 南通制作网站旅游搭建网站
  • 专业做商铺的网站个人网页html模板完整代码
  • 什么网站做美食最好最专业关键词推广是什么意思
  • 自助建设网站软件网站导航网站可以做吗
  • 网站模板放哪长沙网站优化分析
  • 泉州网站建设价钱网站模板素材
  • 南通网站托管js建设网站外网
  • 成都企业网站公司wordpress内页模板
  • 58同城建网站怎么做wordpress评论显示数字ip
  • 免费制作论坛网站模板免费下载北京网站制作长沙
  • 旅游网网站建设网站如何自己做seo
  • 如何验证网站所有权做二手家具回收哪个网站好
  • 做哪种网站赚钱项目开发流程
  • 网站建设和网站网络推广网站建设软件定制
  • 站长工具网址查询全球云邮登陆网站
  • 宁波 住房和建设局网站网上发帖推广
  • 平面设计在线网站工业设计公司有哪些
  • 福州网站设计外包公司网站做的比较好
  • 如何设计网站首页网站开发综合技能实训心得体会
  • 用织梦做的网站好用吗w网站链接如何做脚注
  • 东莞做网站公司在哪哪里有网站培训的
  • 做宣传 为什么要做网站那重庆网站建设公司在线联系
  • 网站设计制作售价多少钱制作图片的软件是
  • 网站验证码目录简单带数据库的网站模版
  • 制作网站用c#做前台网站建设专题的意义
  • 广西建设职业技术学院教育网站牡丹区建设局网站
  • 网站后台怎么用ftp打开上海外贸进出口有限公司
  • 淘宝建设网站的意义大学生做那个视频网站
  • 如何提高你的网站的粘性建设银行流水网站