当前位置: 首页 > news >正文

【并发编程】活锁

       📝个人主页:五敷有你      
 🔥系列专栏:并发编程
⛺️稳重求进,晒太阳

活锁

定义:活锁出现在两个线程互相改变对象的结束条件,最后谁也无法结束

代码示例

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调度执行,也不能够结束,饥饿的情况不易演示,讲读写锁时会设计饥饿问题。

http://www.lryc.cn/news/286948.html

相关文章:

  • CSMM和CMMI之间有什么区别?
  • 企业面临的典型网络安全风险及其防范策略
  • JavaScript进阶:WebAPIs重点知识整理1
  • 【Nginx】使用自生成证书配置nginx代理https
  • 【Linux】文件周边001之系统文件IO
  • 防火墙接口配置实验
  • 《WebKit 技术内幕》学习之五(4): HTML解释器和DOM 模型
  • SpringBoot+Vue充电桩管理系统 附带详细运行指导视频
  • 【数据结构】二叉树算法讲解(定义+算法原理+源码)
  • Vue3基础:挂载事例方法.mount()是什么?根组件模板又是什么?
  • Unity 面试篇|(七)Unity渲染与Shader篇 【全面总结 | 持续更新】
  • 记录一些多维数组的方法
  • Linux:gcc的相关知识
  • Linux的奇妙冒险———vim的用法和本地配置
  • 微信小程序底部按钮适配iPhoneX以上,显示遮挡问题
  • Qt容器QMap(映射)
  • AI时代的创新工具:如何利用AI生成独具个性的XMind思维导图?
  • 【每日一题】最长交替子数组
  • gin数据解析和绑定
  • TCP服务器最多支持多少客户端连接
  • UML类图学习
  • 死锁面试题详解
  • 【rust/bevy】使用points构造ConvexMesh
  • 【C语言】string.h——主要函数总结
  • 如何在前端优化中减少页面加载时间?
  • Typecho后台无法登录显示503 service unavailable问题及处理
  • Python入门(一)
  • 云表企业级无代码案例-自主开发ERP管理系统
  • Qt —— 编译Qt5版本QFTP库,并实现连接服务、获取列表、上传、下载、删除文件等操作(附源码、附基于Qt5编译好的QFTP库)
  • 碰到es6的...拓展运算符