多線程的調試

1.  多線程如何調試java

     例子: 對以下代碼進行調試多線程

    

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 方法上加斷點ide

   

 

1.2  能夠 給 調試 添加 調試條件,如圖:過濾掉主線程,由於主線程並無執行目標工具

   

 

1.3 查看線程運行以後 變量的值spa

 

2. 假如 須要調試 線程 的死鎖怎麼調試?線程

答:用 jstack  ,該工具能夠顯示 哪一個線程 等待在 哪兒。調試

相關文章
相關標籤/搜索