这个问题的原因我不大清楚,有兴趣的同学可以自己去翻些资料。下面是我的解决方案:将需要执行execute的方法用一个线程封装起来,另外执行并且让主线程处于等待态(具体的等待时间自己决定)主线程awake后判断执行execute的方法的线程是否是alive,如果仍然是alive态我们就认为它卡住了然后重新执行这个方法
eg:
/**@return 判断execute方法是否执行完成
*/
public boolean execute(){
Thread thread=new Thread(new Runnable()
{httpClient.execute(getMethod);//为了简化这里就省略了初始化和声明
});
thread.start();
try{
Thread.sleep(1000);
}catch(Exception e){
e.printStack();
}
if(thread.Alive()){
return false;}
else
return true;
}