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走死锁兰...改成个/c佐ok兰..2

2.2. Watchdog2

3. Ref3

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

时间: 2024-11-05 18:28:03

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

Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript.

Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript. 1. 现象::主程序卡住无反应,多行任务不往下执行 1 2. 原因::使用jv jprofile查看线程,原来俩个线程死锁了.. 1 3. Java的缺点,默认不能自动解除死锁 1 4. 自动检测与解除死锁::使用看门狗watchdog 2 4.1. 死锁检测算法(太麻烦,不推荐) 2 4.2. 硬件看门狗 2 4.3. 软件看门狗的实现--TIMER 2 4.4. LIN

进程/线程死锁产生的原因以及如何避免死锁

线程死锁产生的必要条件: (1)互斥条件:一个资源每次只能被一个进程使用. (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. (3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺. (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系. 如何避免死锁,这点我觉得Erlang模型值得参考.在编程过程中,有一些避免死锁的经验: (1) 等待某个资源时,使用超时机制(例如Erlang中的receive可以加一个超时): (2) 采用消息通信的通信机

网络瓶颈、线程死锁、内存泄露溢出、栈堆、ajax

网络瓶颈:网络传输性能及稳定性的一些相关元素 线程死锁:多个线程因竞争资源造成的一种僵局 下面我们通过一些实例来说明死锁现象. 先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃).某一个时候,一个拿了左筷子,一人拿了右筷子,2个人都同时占用一个资源,等待另一个资源,这个时候甲在等待乙吃完并释放它占有的筷子,同理,乙也在等待甲吃完并释放它占有的筷子,这样就陷入了一个死循环,谁也无法继续吃饭...在计算机系统中也存在类似的情况.例如,某计算机系统中只有一台打印

在Linux下线程死锁的四个条件

一.死锁的原因和必要条件 1.死锁的概念 一般情况下,如果同一个线程先后两次调用lock,在第一次调用时,由于锁已经被占,该线程会挂起等待别的线程释放锁,然而锁正是被自己占着的,该线程又被挂起,没有机会释放锁,因此,就永远处于挂起等待状态了,这叫做死锁(Deadlock).另种典型的死锁情形是这样:线程A获 得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线程A和B都永

详细分析死锁产生的条件与原因

一.定义 死锁:集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件,那么该组进程是死锁的. 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了死锁这一特殊现象. 二.产生死锁的必要条件 1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用.如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程 用毕释放. 2)请求和保持条件:指进程已经保持至少一个资源,但又提出

一起talk C栗子吧(第一百一十九回:C语言实例--线程死锁三)

各位看官们.大家好,上一回中咱们说的是线程死锁的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,由于篇幅的原因我们在上一回仅仅介绍了死锁发生的第一种原因,今天我们将介绍死锁发生的另外一种原因,而且该原因中的伪代码转换为实际的C语言代码. 为了方便,我们使用前面章回中演示相互排斥量的代码,在该代码的基础上做一些小改动来演示死锁.代码例如以下: 首先定义两个相互排斥量,相互排斥量是全局变量.方便线程使用. #if MUTEX_ENABLE pthread_m

java多线程之 ---- 线程死锁

java多线程之线程死锁 产生死锁的主要原因: 因为系统资源不足. 进程运行推进的顺序不合适. 资源分配不当等. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其次, 进程运行推进顺序与速度不同,也可能产生死锁. 产生死锁的四个必要条件:  互斥条件:一个资源每次只能被一个进程使用. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺. 循环等待条件:若干进

一起talk C栗子吧(第一百一十七回:C语言实例--线程死锁一)

各位看官们,大家好,上一回中咱们说的是线程同步之互斥量的例子,这一回咱们说的例子是:线程死锁.闲话休提,言归正转.让我们一起talk C栗子吧! 我们在前面章回中介绍互斥量相关的函数时提到过死锁,不过当时没有做详细的介绍,有些看官对死锁不明白.因此,我们在今天的章回中详细介绍死锁,并且使用线程来显示死锁. 死锁就是不同的程序在运行时因为某种原因发生了阻塞,进而导致程序不能正常运行.阻塞程序的原因通常都是由于程序没有正确使用临界资源. 我们举个日常生活中的例子来比喻死锁.我们把马路上行驶的汽车比作

Java线程死锁解决方法(转)

转自:http://leowzy.iteye.com/blog/740859 Java线程死锁如何避免这一悲剧  Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键.不幸的是,使用上锁会带来其他问题.让我们来看一些常见问题以及相应的解决方法: Java线程死锁 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待那些根本不可能被释放的锁,从而导致所有的工作都无法完成.假设有两个线程,分别代表两个饥饿的人,他们必须共享刀叉并轮流吃饭.他们都需要获得两个锁:共享