26.活锁、饥饿锁

两个线程,相互改变了对方结束条件,导致两个线程不能结束。执行时间也都是一样,导致两个线程永远不会结束。

java 复制代码
@Slf4j
public class LiveLockDemo {
    static volatile int count = 10;
    public static void main(String[] args) {

        new Thread(() -> {
            while (count > 0) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                count --;
                log.info("count={}", count);
            }
        }, "t1").start();

        new Thread(() -> {
            while (count < 20) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                count ++;
                log.info("count={}", count);
            }
        }, "t2").start();
    }
}

解决办法:将执行时间设置成不一样即可。

扩充:饥饿锁表示某一个线程长时间获取不到cpu的资源,得不到执行。

相关推荐
Marktowin几秒前
SpringBoot项目的国际化流程
java·后端·springboot
墨雨晨曦889 分钟前
2026/01/20 java总结
java·开发语言
汤姆yu13 分钟前
基于springboot的直播管理系统
java·spring boot·后端
a努力。18 分钟前
虾皮Java面试被问:分布式Top K问题的解决方案
java·后端·云原生·面试·rpc·架构
黎雁·泠崖24 分钟前
Java字符串入门:API入门+String类核心
java·开发语言·python
leikooo36 分钟前
Spring AI 工具调用回调与流式前端展示的完整落地方案
java·spring·ai·ai编程
vx1_Biye_Design41 分钟前
基于web的物流管理系统的设计与实现-计算机毕业设计源码44333
java·前端·spring boot·spring·eclipse·tomcat·maven
MediaTea43 分钟前
Python:MRO 解密 —— C3 线性化算法
java·开发语言
tqs_123451 小时前
倒排索引数据结构
java·前端·算法
饱饱要坚持可持续发展观1 小时前
SpringBoot 集成 Liquibase
java·spring boot·后端