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 ,該工具能夠顯示 哪一個線程 等待在 哪兒。調試