Java线程:活锁

news/2024/5/20 6:11:33 标签: java, JUC

1、什么是活锁

活锁是指,线程没有发生阻塞,但依然执行不下去的情况。

2、活锁的例子

如果两个线程互相改变对方的结束条件,就可能导致双方谁也无法结束。

比如这个程序:

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();
    }
}


相当于一个抽水一个注水,水池永远不会空或者满


http://www.niftyadmin.cn/n/5462606.html

相关文章

LEETCODE-DAY39

title: LEETCODE-DAY39 date: 2024-03-30 17:24:46 tags: 今日内容&#xff1a;62.不同路径、63. 不同路径 II T1 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp[[0 for _ in range(n1)]for _ in range(m1)]dp[1][1]1for i in range(1,m1):for j in r…

车载电子电器架构 —— 诊断数据库开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

JAVAEE——多线程进阶,锁策略

文章目录 锁策略乐观锁和悲观锁乐观锁悲观锁两者的比较 读写锁重量级锁和轻量级锁重量级锁轻量级锁 自旋锁公平锁和非公平锁公平锁非公平锁 可重入锁和不可重入锁可重入锁不可重入锁 锁策略 乐观锁和悲观锁 乐观锁 什么是乐观锁呢&#xff1f;我们可以认为乐观锁比较自信&am…

使用canvas内置api完成图片的缩放平移和导出和添加提示

最近挺忙的&#xff0c;几乎没有时间去更新博客&#xff0c;今天正好在学习新东西&#xff0c;正好和大家分享一下。 最近要做一个使用canvas完成图片平移&#xff0c;缩放&#xff0c;添加标注的需求&#xff0c;完成的效果大概如下&#xff1a; 使用canvas内置api完成图片的缩…

价值1万元的定制版跑分源码 微信支付宝跑分源码,微信支付宝跑分源码

价值1万元的定制版跑分源码 微信支付宝跑分源码&#xff0c;微信支付宝跑分源码|开代理|自动抢单接单。 此类“跑分”操作究竟是如何运作的呢?以一项“为游戏平台提供微信充值接口”的项目说明来举例:用户成功注册并进一步完善用户信息后&#xff0c;就可以抢单&#xff0c;抢…

6.5物联网RK3399项目开发实录-驱动开发之LCD显示屏使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接&#xff1a;https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f LCD使用 简介 AIO-3399J开发板外置了两个LCD屏接口&#xff0c;一个是EDP&#xff0c;一个是LVDS&#xff0c;接口对应板…

C++list的模拟实现

为了实现list&#xff0c;我们需要实现三个类 一、List的节点类 template<class T> struct ListNode {ListNode(const T& val T()):_pPre(nullptr),_pNext(nullptr),_val(val){}ListNode<T>* _pPre;ListNode<T>* _pNext;T _val; }; 二、List的迭代器…

高级排序算法:归并排序(优化版)

题目描述 leecode第912题&#xff1a;排序数组&#xff1a; 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&…