博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpURLConnection getting locked
阅读量:6733 次
发布时间:2019-06-25

本文共 1337 字,大约阅读时间需要 4 分钟。

hot3.png

入职了一家做金融大数据的公司,终于走向Java开发者的正轨了~

最近遇到一个问题,服务器多线程程序在运行时,偶尔线程会发生死锁,进程在内存中不能释放,该程序会先删除数据库的表,执行完毕会新生成数据。这样就导致了数据库的表被清空,于是开始调查:

ps -aux|grep appps -eLf|grep appjstack -l pid > pid.log

找到了问题所在,就是在 调用java 的 获取线上数据时,发生超时了:

at java.io.BufferedInputStream.read(BufferedInputStream.java:345)	- locked <0x0000000674b25db8> (a java.io.BufferedInputStream)	at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704)	at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1535)	- locked <0x0000000674b1a7a0> (a sun.net.www.protocol.http.HttpURLConnection)	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)	- locked <0x0000000674b1a7a0> (a sun.net.www.protocol.http.HttpURLConnection)	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)

解决方案:

第一步追加 设置从主机读取的超时设置

URL url = new URL(urlStr);HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();httpConn.setConnectTimeout(3000);httpConn.setReadTimeout(3000);//addhttpConn.setDoInput(true);httpConn.setRequestMethod("GET");httpConn.connect();//add

第二步追加多次链接尝试:

json = getJsonContent(URL);int i = 0;while (StringUtils.isEmpty(json) && i < 3) {  json = getJsonContent(URL);  i++;}

 

转载于:https://my.oschina.net/GoogleFan/blog/744713

你可能感兴趣的文章
PPT中如何选择英文字体
查看>>
基于matlab的fft变换中参数的设置
查看>>
C# http post 地址
查看>>
hdu 1443 Joseph+暴力打表
查看>>
hud1150二分图最小顶点覆盖
查看>>
table元素完全指南(包含css3+html5)
查看>>
hdu2813字典树+KM
查看>>
poj3723 MST好题 kruskal
查看>>
javascript实现深克隆的几种方法
查看>>
webService远程调用不能进行调试如何设置
查看>>
UML用例图总结(转)
查看>>
2016-9-4
查看>>
opencv 连通域需要的函数解析
查看>>
OpenCV:二值图像连通区域分析与标记算法实现
查看>>
几个可用于数据挖掘和统计分析的java库
查看>>
2018-2019-1 20165313 《信息安全系统设计基础》第七周学习总结”
查看>>
201621123069 《Java程序设计》第3周学习总结
查看>>
哈夫曼编码与解码的C++实现:建立哈夫曼树、进行哈夫曼编码与解码
查看>>
018、容器命名最佳实践 (2019-01-09 周三)
查看>>
EasyUI 在mvc中的引入与使用
查看>>