活锁(livelock)

活锁(livelock): 没有真正的锁问题,而是进程不停地执行重复的操作,却总是失败。

《JAVA并发编程实践》给出了两个例子:

1. MQ消费者处理消息失败后将消息丢回到队列头部,然后立即马上收到这个消息,然后再处理失败入。。。

2. 两个礼貌的人在路上挡住彼此去路,然后同时往一边让,结果还是互相挡住;然后在同时往另一边让,结果也是互相挡住;然后再往一边让。。。

解决活锁的办法是在操作中引入退出机制,或者引入随机性。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.