[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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM