多线程的调试

编程

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

回到顶部