多线程之活锁(了解一下就可以了)
1.背景
活锁的概念:
活锁出现在两个线程互相改变对方的结束条件,最后谁也无法结束
也叫着死循环,在这里作为一个概念理解
2.代码
package com.ldp.demo01; import com.common.MyThreadUtil; import lombok.extern.slf4j.Slf4j; /** * @author 姿势帝-博客园 * @address https://www.cnblogs.com/newAndHui/ * @WeChat 851298348 * @create 02/02 8:29 * @description <p> * 活锁的概念: * 活锁出现在两个线程互相改变对方的结束条件,最后谁也无法结束 * 也叫着死循环,在这里作为一个概念理解 * </p> */ @Slf4j public class Test11LiveLock { static int n = 100; /** * 案例: * 假设n=100, * 线程t1对n做n++直到n>=200结束; * 线程t2对n做n--直到n<=0结束; * 如果只看线程t1或者只看线程t2是没有问题的, * 但是如果两个线程同时工作,那么就有可能永远执行不完即【活锁】现象。 * * @param args */ public static void main(String[] args) { Thread t1 = new Thread(() -> { while (n < 200) { log.info("n={}", n); MyThreadUtil.sleep(1); n++; } }, "t1"); Thread t2 = new Thread(() -> { while (n > 0) { log.info("n={}", n); MyThreadUtil.sleep(1); n--; } }, "t2"); t1.start(); t2.start(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人