之前总是发现 httpclient 有假死的问题,各种超时时间都设置了,都不能解决,最近跟踪了下,发现是 dns 解析地方的超时导致,在 InetAddress.getByName 卡住
虽然Socket类有setTimeout()方法,URLConnection有setConnectTimeout()方法,但这都不能给DNS查询过程添加时间限制,也就是说,如果DNS服务器挂了,那么代码就会阻塞几十秒才能抛出异常。我最近就遇到了这个问题,当DNS服务器出问题的时候,setTimeout()设置的超时时间就不起作用了。
经过google,发现Java目前居然还没有现成的API来处理DNS查询超时的问题。不过一个老外的博客上给出了一种曲线救国的方法:
public class DNSLookupThread extends Thread {
private InetAddress addr;
private String hostname;
public DNSLookupThread(String hostname) {
this.hostname = hostname;
}
public void run() {
try {
InetAddress add = InetAddress.getByName(hostname);
set(add);
} catch (UnknownHostException e) {
}
}
private synchronized void set(InetAddress addr) {
this.addr = addr;
}
public synchronized String getIP() {
if (null != this.addr) {
return addr.getHostAddress();
}
return null;
}
}
见 http://blog.csdn.net/neosmith/article/details/43235335
相关推荐
在IT行业中,窗体假死(Form Freeze)是开发者经常遇到的问题,特别是在开发Windows桌面应用程序时。窗体假死指的是用户界面(UI)无响应,无法执行任何操作,导致用户体验严重下降。这个问题通常是由于应用程序的...
同时,该程序采用了多线程异步下载技术,这一技术的应用有效避免了在大量图片下载过程中可能出现的界面假死现象,确保了用户在下载时依然可以流畅地使用其他功能。 首先,我们来深入了解一下C#语言。C#是由微软公司...
由于异步操作的特性,它能处理那些按顺序依次执行的接口调用,而不会阻塞主线程,让页面陷入假死状态。在Angular中,主要通过Promise规范来实现异步变同步的处理。 首先,异步编程是JavaScript的核心特征之一,它...
在framework中,大量并发 HttpWebRequest 需要设置一个最大连接数 ServicePointManager.DefaultConnectionLimit = 200;...HttpWebRequest 会导致 IIS 直接假死,所以在core中,只能使用 HttpClient 和 HttpC
实训商业源码-抽奖模块V2.4.4 开源版-毕业设计.zip
实训商业源码-酷炫小程序相册V4.7.0 前端+后端-毕业设计.zip
实训商业源码-QQ域名防报毒网站程序PHP源码 带后台-毕业设计.zip
实训商业源码-便利店小程序 1.0.9-毕业设计.zip
实训商业源码-H5手机转盘活动游戏页面源码-毕业设计.zip
实训商业源码- 视频小店V1.0.4 原版-毕业设计.zip
实训商业源码-仿B站风格视频影视电影网站源码-毕业设计.zip
实训商业源码-C风格门户版1.1 UTF8+GBK-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-星尘.zip
实训商业源码-酷炫小程序相册 4.5.8-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-一天,一生.zip
scratch少儿编程逻辑思维游戏源码-线路关闭.zip
内容概要:本文详细介绍了如何利用MATLAB/Simulink搭建独立运行的光伏混储微电网系统。主要内容涵盖光伏的最大功率点跟踪(MPPT)控制方法,尤其是扰动观察法(P&O)的具体实现及其优化技巧;混合储能系统的功率分配策略,包括采用低通滤波器将功率需求分为低频和高频分量分别由蓄电池和超级电容承担;以及针对不同储能元件的特殊控制措施,如蓄电池的充放电效率补偿和超级电容的限流保护。此外,还讨论了仿真调试过程中的常见问题及解决方案,强调了各子系统的协同工作对于整个系统稳定性的重要意义。 适合人群:从事电力电子、新能源发电领域的研究人员和技术人员,尤其适用于有一定MATLAB/Simulink基础并对光伏混储微电网感兴趣的读者。 使用场景及目标:帮助读者掌握光伏混储微电网的设计与实现方法,特别是在MATLAB/Simulink环境下进行系统建模、仿真和优化的能力。通过学习本文提供的具体案例和技术细节,能够更好地理解和解决实际工程中遇到的问题。 其他说明:文中提供了大量实用的代码片段和调试经验,有助于加深对理论知识的理解并提高动手能力。同时提醒读者关注各个组件之间的相互影响,确保系统整体性能最优。
【低空经济】低空人工智能调度中心建设方案
coneypo_ML_handwritten_number_21976_1746366665585.zip
scratch少儿编程逻辑思维游戏源码-足球传送门.zip