多线程的调试
1. 多线程如何调试
例子: 对如下代码进行调试
public class UnsafeArrayList { static ArrayList al=new ArrayList();
static class AddTask implements Runnable{
@Override
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
for(int i=0;i<1000000;i++)
al.add(new Object());
}
}
public static void main(String[] args) throws InterruptedException {
Thread t1=new Thread(new AddTask(),"t1");
Thread t2=new Thread(new AddTask(),"t2");
t1.start();
t2.start();
Thread t3=new Thread(new Runnable(){
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
},"t3");
t3.start();
}
1.1 给 ArrayList 的 add 方法上加断点
1.2 可以 给 调试 添加 调试条件,如图:过滤掉主线程,因为主线程并没有执行目标
1.3 查看线程运行之后 变量的值
2. 假如 需要调试 线程 的死锁怎么调试?
答:用 jstack ,该工具可以显示 哪个线程 等待在 哪儿。
以上是 多线程的调试 的全部内容, 来源链接: utcz.com/z/511756.html