zoukankan      html  css  js  c++  java
  • [java]多线程——多线程debug调试(非常非常详细的调试)

    在日常开发中我们经常会遇到多线程Debug调试,

    一般我们都是利用Spring Boot对外提供接口,Tomcat中在有多人同时访问时,会开启多线程,但是,这时有可能发生异常。

    说明接口在多线程访问中不是很稳定,这时就要利用多线程的Debug调试。

    以下是一个小Demo来演示多线程的Debug调试

    public class LockDemoReetrantLock {
    private int i=0;
    private ReentrantLock reentrantLock=new ReentrantLock();
    public void inCreate(){
    断点 reentrantLock.lock();

    try{
    i++;
    }finally {
    reentrantLock.unlock();//注意:一般的释放锁的操作都放到finally中,
    // 多线程可能会出错而停止运行,如果不释放锁其他线程都不会拿到该锁
    }

    }


    public static void main(String[] args){
    ReentrantLock lock = new ReentrantLock();
    lock.lock();
    LockDemoReetrantLock lockDemoReetrantLock = new LockDemoReetrantLock();
    for (int i=0;i<3;i++){
    new Thread(()->{
    lockDemoReetrantLock.inCreate();
    }).start();
    }


    }
    }


    开始刚一执行此时i=2

    接着下一步下一步,程序直接跳出 看不到ReentrantLock的排队操作,

    再次运行

    在进行一次调试此时i=1

    同样看不到排队操作,不是我们想要的结果!!

    在断点调试的断点上右击实现设置(Mac版)

    一运行Debug 其它两个线程就已经启动了,中有一个线程能够停止到这个断点

    改为Thread之后---->makeDefault---->done

    此时就Ok了

    ————————————————
    版权声明:本文为CSDN博主「qq_29235677」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_29235677/article/details/88186308

  • 相关阅读:
    asp.net 汉字转拼音类
    NET分页实现及代码
    Web.config配置文件详解(新手必看) (转载)
    偶开通博客啦
    转帖不会乱码的,powershell网络蜘蛛
    ConvertFrom-String 命令研究
    powershell玩转xml之20问
    powershell 判断操作系统版本 命令
    powershell加win的dns服务器,解决网站负载均衡问题
    PowerShell并发控制-命令行参数之四问
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/15240094.html
Copyright © 2011-2022 走看看