昨天死线程的问题又找到了别的原因
昨天调程序,开了几十个线程,总有几个出不了,后来发现是httpwebrequest的向网站的请求没有返回,一直等在那里出不来,后来设置了允许的并发连接数、连接的超时timeout的限定以及一些参数,果然,死的线程基本上没有了。但是发现偶尔会出现一两个还是会死在里面,特别是反复处理几批检索关键字后,偶尔会出现。于是我打开vs2010的多线程窗口,设置断点,在多线程窗口找到了死在那里的线程,并定位了死的语句,竟然是这一句。
死掉的线程语句
我赶紧在语句后面加了一个注释,哈哈。
然后查找ReadToEnd()的资料,终于找到了一个说法。
GetResponseStream之后,所得到的Stream,通过StreamReader去读取,用ReadToEnd或ReadLine,有时候会无限期的挂掉;
所以,希望:
StreamReader的ReadToEnd或ReadLine,支持Timeout
以达到:
不会无限期的挂掉,而是超时后,就终止
这样代码中就可以通过多次获取html,而最终避开此单次的获得html有误,而达到程序正常运行的目的了。
具体实现方式是:
在发送web请求之前,对于HttpWebRequest,就去设置对应的参数ReadWriteTimeout,StreamReader的timeout也做设置
其默认值是300000=300 seconds = 5 minutes
此处,我改为300000 = 30 seconds
然后,后续在正常的GetResponse后,再去获得GetResponseStream而得到Stream,
对于Stream,去通过StreamReader读取,使用ReadToEnd或ReadLine都可以。
这里这篇文章真的是描述得很仔细。
也是一位程序员碰到一样的问题的结局过程。
转载于:https://blog.51cto.com/haoduolang/1543604
昨天死线程的问题又找到了别的原因相关推荐
- 生于拉新,死于留存!如何找到 Aha moment?
文章会涉及两个名词,所以在正文展开之前先简单的说下这两个名词,两个词分别是增长黑客.Aha moment. 下面的资料来源于 Wiki 百科: 成长骇客(Growth hacker),又译增长黑客.营 ...
- java 线程 handler,java.lang.RuntimeException:处理程序(android.os.Handler)在死线程上向处理程序发送消息...
在我的应用程序中,我使用IntentService发送短信. @Override protected void onHandleIntent(Intent intent) { Bundle data ...
- 语言撒谎问题_孩子撒谎是高情商?四招帮家长找到孩子撒谎原因,纠正撒谎行为...
随着孩子年龄的增长,孩子们学会了"撒谎".比如,说自己身体不舒服,不想去上课:忘记写作业,却说是老师没有留:偷偷改了考试成绩,好像考了高分,想要蒙混过关等等. 对于有撒谎行为的孩子 ...
- 电脑突然经常死机?(ubuntu系统如何检查原因)
问题描述 台式机(我的是GPU服务器)突然发现隔3-5天就会死机一次,硬件重启后可以正常使用,但过几天又会死机. 原因分析 出现这种情况大概率不是系统或某个软件卡顿造成的,因为这两种死机情况一般不会很 ...
- 【跑飞、死机】单片机 msp430程序跑飞原因和解决方式积累
目录 单片机 msp430程序跑飞原因和解决方式积累 MSP430 数组填充越界引起的栈溢出 导致程序跑飞 [单片机重启]MSP430重启/频繁重启/跑飞 原因分析 单片机 msp430程序跑飞原因和 ...
- 计算机无法找到组件c0000135,电脑开机显示无法找到组件的原因
匿名用户 1级 2009-10-18 回答 症状:Lsass.exe无法找到入口,无法定位程序输入点LdrSetSessionName于动态链接库mfc40udll,上随即出现黑屏 ! 近日一个危险的 ...
- 斐讯的服务器不稳定,K1不稳定的原因找到了!原因是CPU时钟频率太高,要降频!...
本帖最后由 ┢┦aΡpy 于 2016-7-20 22:25 编辑 但Breed Web 控制台时钟频率设置不能保存,降频重启后 CPU时钟频率 恢复580MHZ,怎么解决? 日志一直这样: Jul ...
- 找到: 没有参数 原因: 实际参数列表和形式参数列表长度不同
Boot项目,运行时报错 定位到错误位置 解决方法 在User实体类中加上@NoArgsConstructor注解,成功运行
- STM32 BOOT0连接不当造成死机
一下内容转自:http://www.360doc.com/content/14/0326/10/6624919_363817465.shtml STM32的三种启动方式依靠BOOT0和BOOT1两个引 ...
最新文章
- 对电商用户的数据分析!
- ieda中快捷搜索_IntelliJ IDEA IDE设置系列教程(十):在工具窗口中快速搜索
- PHP - NetBeans中调试PHP
- 《JavaScript 标准参考教程》阮一峰
- 从0开始利用宝塔linux面板+WordPress一键部署搭建个人的博客介绍
- 八大编程知名编程语言或系统的发展简史
- smarty模板概念及应用场合
- 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新
- 如何有效的压缩虚拟磁盘
- MyISAM 和 InnoDB 讲解
- SSH框架电子商城-系统技术分析
- 《从零开始的 RPG 游戏制作教程》第八期:对话、按钮、变量、马甲
- 广州大学机器学习与数据挖掘实验一:线性回归
- Mac使用U盘重装系统
- redo log详解
- matlab中psf2otf作用,Matlab中psf2otf()函数在opencv中的实现
- 电脑出现不良代码查找
- 面试题(十二)自我介绍
- 小米总监说软件测试分为这及类
- html实现数据的增删查改