关于活锁的概念问题

来源:14-20 活锁演示

慕函数0594413

2020-05-02

老师你好,关于活锁有个概念性的问题有点疑惑。

活锁有没像死锁那样要求是发生在2个或者2个以上的线程。
比如说某个线程由于逻辑问题,它自己陷入了死循环,与其他线程无关。能否说这个线程发生了活锁?

再比如消息队列重复消费这个案例,线程A拿到队头元素,正在处理。同时线程B拿到下一个元素,成功处理。此时线程A,由于依赖服务出了问题,处理该消息失败,将消息放回队头。这时线程C又来消费队头元素,依然失败。
这个瞬间,可以说线程A和线程C陷入了活锁吗?

写回答

1回答

悟空

2020-05-02

恩,活锁没有一个权威定义哈,我理解的活锁,并不要求2个或者2个以上的线程,所以自己陷入了死循环,也是活锁。

后面的例子,我认为可以认为线程A C陷入了活锁。

2
1
慕函数0594413
好的,谢谢老师!
2020-05-05
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程