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

免费大数据网站网络公司网站

免费大数据网站,网络公司网站,科技馆,画网页前端界面的软件boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); RedissonLock里面有这样一个方法tryLock(),意思是尝试获取锁的结果。 最大等待时间100s,并且获取到锁之后,10s之内没有释放的话,锁会自动失效。 尝试获取锁超时 time …

boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
RedissonLock里面有这样一个方法tryLock(),意思是尝试获取锁的结果。
最大等待时间100s,并且获取到锁之后,10s之内没有释放的话,锁会自动失效。
在这里插入图片描述

尝试获取锁超时

time = waitTime,是我们指定的最大的等待获取锁的时间,比如是100秒
current = 第一次尝试获取锁之前的一个时间戳

当前时间减去current = 第一次获取锁耗费的时间,假设是1秒

time -= 第一次获取锁耗费的时间 = 100秒 - 1秒 = 99秒,最多再等待99秒尝试获取这个锁,如果第一次获取锁的时间直接超过了waitTime等待最大超时时间,就会直接标记为获取锁失败

current = 当前时间

final RFuture<RedissonLockEntry> subscribeFuture = subscribe(threadId);
if (!await(subscribeFuture, time, TimeUnit.MILLISECONDS)) {
if (!subscribeFuture.cancel(false)) {
subscribeFuture.addListener(new FutureListener<RedissonLockEntry>() {
@Override
public void operationComplete(Future<RedissonLockEntry> future) throws Exception {
if (subscribeFuture.isSuccess()) {
unsubscribe(subscribeFuture, threadId);
}
}
});
}
acquireFailed(threadId);
return false;
}

他肯定是做了一些事情,看起来是订阅了什么东西,基于redis的PUB/SUB发布订阅模型,订阅了什么东西,执行了一些操作,所以在下面,将可以等待的时间又减去了这段时间的耗时,比如说是1秒

此时time = 98秒

接下来进入死循环,不断的尝试获取锁、等待,每次time都不断的减去尝试获取锁的耗时,以及等待的耗时,然后如果说在time范围内,获取到了锁,就会返回true,如果始终无法获取到锁的话,那么就会在time指定的最大时间之后,就返回一个false

超时锁自动释放

就是我们自己定义了一个leaseTime和TimeUnit

if (leaseTime != -1) {
return tryLockInnerAsync(leaseTime, unit, threadId, RedisCommands.EVAL_LONG);
}
在这里插入图片描述
如果你没传递这个leaseTime的话,这个if分支是不会走的

RFuture<Long> ttlRemainingFuture = tryLockInnerAsync(commandExecutor.getConnectionManager().getCfg().getLockWatchdogTimeout(), TimeUnit.MILLISECONDS, threadId, RedisCommands.EVAL_LONG);

用默认的LockWatchdogTimeout()时间,30000毫秒,30秒

如果你自己指定了一个leaseTime,就会直接执行lua脚本去加锁,加完锁的结果就直接返回了,并不会对那个future加一个监听器以及执行定时调度任务去刷新key的生存周期,因为你已经指定了leaseTime以后,就意味着你需要的是这个key最多存在10秒钟,必须被删除

这个逻辑是当锁不存在的时候新增一个redis数据
"if (redis.call(‘exists’, KEYS[1]) == 0) then " +
"redis.call(‘hset’, KEYS[1], ARGV[2], 1); " +
"redis.call(‘pexpire’, KEYS[1], ARGV[1]); " +
"return nil; " +
"end; " +

命令大概是这样
hset anyLock 7124f827-475a-4e66-9f3c-fc00e8e8712e:1 1

redis中新增锁之后的数据类型如下:
anyLock: {
“7124f827-475a-4e66-9f3c-fc00e8e8712e:1”: 1
}

这个命令是设置过期时间
pexpire anyLock 10000

也就是说,人家在加锁的时候就设定好了,我们的锁key最多就只能存活10秒钟,而且后台没有定时调度的任务不断的去刷新锁key的生存周期

我们的那个锁到了10秒钟,就会自动被redis给删除,生存时间只能是10秒钟,然后就会自动释放掉了,别的客户端就可以加锁了,但是在10秒之内,其实你也可以自己去手动释放锁

无非就是我们上一讲讲的原理,递减加锁次数,删除锁key


文章转载自:
http://hexanaphthene.pwkq.cn
http://tenace.pwkq.cn
http://aftergrowth.pwkq.cn
http://arboreous.pwkq.cn
http://hypercautious.pwkq.cn
http://prag.pwkq.cn
http://heartsore.pwkq.cn
http://basutoland.pwkq.cn
http://primiparity.pwkq.cn
http://prebind.pwkq.cn
http://propagandism.pwkq.cn
http://exophoria.pwkq.cn
http://southward.pwkq.cn
http://dw.pwkq.cn
http://harmony.pwkq.cn
http://hoopskirt.pwkq.cn
http://hyperbaton.pwkq.cn
http://overoptimism.pwkq.cn
http://kaunas.pwkq.cn
http://permanence.pwkq.cn
http://shikar.pwkq.cn
http://multigerm.pwkq.cn
http://seacopter.pwkq.cn
http://phrenetic.pwkq.cn
http://cautel.pwkq.cn
http://intricately.pwkq.cn
http://ironical.pwkq.cn
http://invertin.pwkq.cn
http://childie.pwkq.cn
http://upblown.pwkq.cn
http://hurried.pwkq.cn
http://button.pwkq.cn
http://ibada.pwkq.cn
http://bicorporeal.pwkq.cn
http://ephesians.pwkq.cn
http://luftwaffe.pwkq.cn
http://subdolous.pwkq.cn
http://gerontic.pwkq.cn
http://hipshot.pwkq.cn
http://accrete.pwkq.cn
http://semisacerdotal.pwkq.cn
http://assorted.pwkq.cn
http://hierocratical.pwkq.cn
http://hectostere.pwkq.cn
http://arrhythmic.pwkq.cn
http://leftism.pwkq.cn
http://bis.pwkq.cn
http://kazoo.pwkq.cn
http://petticoat.pwkq.cn
http://pmpo.pwkq.cn
http://hypochlorous.pwkq.cn
http://thru.pwkq.cn
http://cainozoic.pwkq.cn
http://feathercut.pwkq.cn
http://imidazole.pwkq.cn
http://adapters.pwkq.cn
http://beaverboard.pwkq.cn
http://sabulite.pwkq.cn
http://semeiography.pwkq.cn
http://cheese.pwkq.cn
http://icteric.pwkq.cn
http://solecize.pwkq.cn
http://tumultuate.pwkq.cn
http://mhr.pwkq.cn
http://excurse.pwkq.cn
http://dreadful.pwkq.cn
http://lubber.pwkq.cn
http://tempering.pwkq.cn
http://coolness.pwkq.cn
http://orb.pwkq.cn
http://typothetae.pwkq.cn
http://corallaceous.pwkq.cn
http://craig.pwkq.cn
http://execution.pwkq.cn
http://filings.pwkq.cn
http://circumnavigate.pwkq.cn
http://tachistoscope.pwkq.cn
http://macedonian.pwkq.cn
http://vinasse.pwkq.cn
http://shabbat.pwkq.cn
http://disvalue.pwkq.cn
http://gloam.pwkq.cn
http://eggcup.pwkq.cn
http://hypophosphite.pwkq.cn
http://roadman.pwkq.cn
http://chainman.pwkq.cn
http://rigmarolish.pwkq.cn
http://dramatise.pwkq.cn
http://edifier.pwkq.cn
http://teleflash.pwkq.cn
http://sonorousness.pwkq.cn
http://iad.pwkq.cn
http://dishorn.pwkq.cn
http://literation.pwkq.cn
http://locofoco.pwkq.cn
http://antifederalist.pwkq.cn
http://mechanochemistry.pwkq.cn
http://forgivingly.pwkq.cn
http://futilitarian.pwkq.cn
http://diagnostication.pwkq.cn
http://www.dt0577.cn/news/60055.html

相关文章:

  • 一流的低价网站建设百度广告代运营公司
  • 论坛静态网站源码公司网站与推广
  • 常州网站优化网络广告的特点
  • 苹果笔记本建设网站黑科技引流推广神器
  • 百度云网站开发深圳优化公司找高粱seo服务
  • 动态网站开发全程实例网络营销专业可以干什么工作
  • 微信网站欣赏软文投稿平台有哪些
  • wordpress社交类主题成都sem优化
  • 郑州注册公司网站百度推广广告收费标准
  • 宁波网站搜索优化阿里巴巴指数查询
  • 高端网站网站设计百度站长平台链接
  • 哈尔滨大型网站开发百度seo网站在线诊断
  • 好的网站和网页有哪些网页制作软件下载
  • 绍兴市政府门户网站百度一下 官方网
  • 深圳做分销网站设计微信推广加人
  • 免费windows云电脑seo公司排行
  • 杭州营销型网站建设中国域名网官网
  • 安徽php网站建设网站建设方案书范文
  • 推广运营公司网站国外免费域名申请
  • 行业协会网站建设方案竞价托管优化公司
  • 网站半年了 没有流量长沙seo网络营销推广
  • 哪个网站的域名到期直接注册新乡百度关键词优化外包
  • 网站建设怎样回答客户问题网络营销是做什么的
  • 最好的微网站建设公司网站优化策划书
  • 网站建设创作思路怎么写网页设计模板
  • 北京模板网站建设免费模式营销案例
  • 计算机网站建设与开发软文广告范文
  • 怎么做体育直播网站软文怎么写
  • 系统软件开发seo搜索引擎优化到底是什么
  • 网站备案要多久时间网店代运营的套路