atitit.線程死鎖 卡住無反應 的原因in cmd調用的解決方案 v3 q39 1. 問題::線程死鎖 卡住無反應1 1.1. 分類:: cmd調用, net io , file io 調用, multi thread調用same var的時候兒..1 1.2. 原因readLin
atitit.線程死鎖 卡住無反應 的原因in cmd調用的解決方案 v3 q39
1.1. 分類:: cmd調用, net io , file io 調用, multi thread調用same var的時候兒..1
2.1. 使用了cmd /k走死鎖蘭...改成個/c佐ok蘭..2
1. 問題::線程死鎖 卡住無反應
1.1. 分類:: cmd調用, net io , file io 調用, multi thread調用same var的時候兒..
1.2. 原因readLine()是阻塞方法
. BufferedReader.readLine 死鎖的原因
// readLine()是阻塞方法,當鍵盤輸入之後,點擊回車,得到的值不會為null,就一直處於阻塞狀
1.3. 調用same var
作者:: 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:[email protected]
轉載請註明來源: http://www.cnblogs.com/attilax/
2. 解決之道::
2.1. 使用了cmd /k走死鎖蘭...改成個/c佐ok蘭..
String cmd="cmd.exe /c dir ";//cmd="dir";
2.2. Watchdog
private void check_time_out(FutureTask task) {
Runnable checkTimeout=new Runnable() {
@Override
public void run() {
try {
System.out.println("--start check task ,timeout:"+timeout_secs+ " taskid:"+task);
Object r=task.get(timeout_secs,TimeUnit.SECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println( "--checkTimeout");
//task.cancel(true);
//task.
} catch(CancellationException e)
{
System.out.println("--warnging");
e.printStackTrace();
}
}
};
new Thread(checkTimeout).start();
}
3. Ref
Atitit.線程 死鎖 跑飛 的檢測與自動解除 與手動解除死鎖 java c# .net php javascript. —核心網路.htm