2016 - 2024

感恩一路有你

同步锁的使用方法 lock锁实际使用场景?

浏览量:2281 时间:2023-04-29 08:20:25 作者:采采

lock锁实际使用场景?

场景1:要是突然发现该操作早就在先执行中则继续不能执行(有状态不能执行)

a、用在定时任务时,要是任务执行时间可能会达到以后目标想执行时间,以保证该有状态任务只能一个正准备负责执行,忽视乱词触发时。

b、用在界面交互时直接点击想执行较长时间请求操作时,如何防止过直接点击会造成后台重复不能执行(忽视再重复一遍触发时)。

以上两种情况多应用于参与非重要任务以免反复重复想执行,(如:清理无用正式文件,系统检查某些资源的可用性,数据备份操作等)

场景2:假如发现到该操作早就在不能执行,等待一个一个负责执行(同步不能执行,相似synchronized)

这种比较比较最常见的一种大家也都在用,要注意是避兔资源不使用,只要同一时间内仅有一个操作可以不不使用该资源。

但与synchronized的确实区别是性能优势(震颤jvm的优化这个差距在减小)。同样Lock有更灵活的锁定住,公平锁与不公平锁,而synchronized永远是公平的。

那种情况主要注意主要用于对资源的争抢(如:文件操作,同步消息正在发送,有状态的操作等)

ReentrantLock默认情况下为不公平锁

场景3:假如发现该操作早就在先执行,则试图再等待一段时间,在等待连接超时则不执行(一段时间等待负责执行)

这种其实一类场景2的改进,耐心的等待额外锁的操作有一个时间的限制,如果没有连接失败则彻底放弃想执行。

利用能够防止而资源如何处理方法不恰当长时间占内存可能导致死锁情况(大家都在等待资源,造成线程队列泻出)。

场景4:如果没有突然发现该操作早在先执行,在等待不能执行。这时可自动正在进行的操作立刻施放锁再继续下一能操作。

synchronized与Lock在默认情况下是绝对不会响应关闭(interrupt)操作,会继续不能执行完。lockInterruptibly()提供给了可掉线锁来帮忙解决此问题。(场景2的另一种加以改进,还没有连接超时,没法静静的等待掉线或执行完毕)

这个要注意作用于取消某些操作对资源的占用。如:(取消后也在离线运行的操作,来以免不正常了你的操作长时间占内存会造成的阻塞)

同步锁存器和异步锁存器区别?

锁存器是电平可以触发的存储单元,数据存储的动作取决于输入时钟(的或使能)信号的电平值,当锁存器在使能状态时,输出才会紧接着数据然后输入发生变化。(简单地说,它有两个输入,共有是一个比较有效信号E,一个输入数据信号D,它有一个输出来Q,它的功能那就是在E最有效的时候把D的值掌谱Q,也就是锁存的过程)

同步锁存器与所加时钟的信号歌词同步,相对来讲,系统存储数据的时间,同步存储文件会比异步模式锁存器少,速度快。

资源 时间 情况 状态 场景

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。