本文主要是介绍【并发编程】活锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
📝个人主页:五敷有你
🔥系列专栏:并发编程
⛺️稳重求进,晒太阳
活锁
定义:活锁出现在两个线程互相改变对象的结束条件,最后谁也无法结束
代码示例
public class TestLiveLock {static volatile int count = 10;static final Object lock = new Object();public static void main(String[] args) {new Thread(() -> {// 期望减到 0 退出循环while (count > 0) {sleep(0.2);count--;log.debug("count: {}", count);}}, "t1").start();new Thread(() -> {// 期望超过 20 退出循环while (count < 20) {sleep(0.2);count++;log.debug("count: {}", count);}}, "t2").start();}
}
解锁方式:
- 错开执行,
- 睡眠时间随机等
饥饿
很多教程把饥饿定义为:一个线程由于优先级太低,始终得不到CPU调度执行,也不能够结束,饥饿的情况不易演示,讲读写锁时会设计饥饿问题。
这篇关于【并发编程】活锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!