atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39

Posted attilaxAti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39相关的知识,希望对你有一定的参考价值。

atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39

 

1问题::线程死锁  卡住无反应1

1.1. 分类:: cmd调用,  net io  , file  io 调用, multi thread调用same var的时候儿..1

1.2. 原因readLine()是阻塞方法1

1.3. 调用same var1

2解决之道::2

2.1. 使用了cmd /k走死锁兰...改成个/cok..2

2.2. Watchdog2

3Ref3

 

 

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:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

2. 解决之道::

2.1. 使用了cmd /k走死锁兰...改成个/cok..

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

 

以上是关于atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39的主要内容,如果未能解决你的问题,请参考以下文章

atitit.atiOrmStoreService 框架的原理与设计 part1  概述与新特性

Atitit. Async await 优缺点 异步编程的原理and实现 java c# php

死锁的3种死法

atitit 提升数据库死锁处理总结

41 父类持有子类的引用多线程加载造成死锁问题

多线程之死锁就是这么简单