ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多线程之活锁(了解一下就可以了)

2022-02-02 09:00:41  阅读:173  来源: 互联网

标签:t2 MyThreadUtil t1 活锁 了解 线程 之活 多线程 com


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

 

完美

标签:t2,MyThreadUtil,t1,活锁,了解,线程,之活,多线程,com
来源: https://www.cnblogs.com/newAndHui/p/15860060.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有