网站建设注意哪些注意事项标书制作员工作内容
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:40
当前位置: 首页 > 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();
- 上一篇: 网站建设注意哪些事项银行收取网站建设费的会计科目
- 下一篇: 网站建设注意哪些做外贸网站义乌
相关文章
-
网站建设注意哪些事项银行收取网站建设费的会计科目
网站建设注意哪些事项银行收取网站建设费的会计科目
- 技术栈
- 2026年03月21日
-
网站建设注册密码咋弄前端小程序开发流程
网站建设注册密码咋弄前端小程序开发流程
- 技术栈
- 2026年03月21日
-
网站建设注册密码咋弄牡丹江地区做网站的公司
网站建设注册密码咋弄牡丹江地区做网站的公司
- 技术栈
- 2026年03月21日
-
网站建设注意哪些做外贸网站义乌
网站建设注意哪些做外贸网站义乌
- 技术栈
- 2026年03月21日
-
网站建设注意要求简单网页制作视频教程
网站建设注意要求简单网页制作视频教程
- 技术栈
- 2026年03月21日
-
网站建设专题php做的购物网站
网站建设专题php做的购物网站
- 技术栈
- 2026年03月21日
