咨询一问题:多线程,如果彻底终止线程呢? 本帖最后由 sjlucn 于 2012-01-11 13:14:38 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 强制结束线程的做法是用 Thread.interrupt(),但一般不推荐这么干。HttpClient自身并没有实现并发,所以是依赖于主调函数的线程资源在执行,那么主线程被结束掉,HttpClient也就被结束掉了。结束线程的一般推荐做法是run()函数中,while(flag) { 循环的工作 }然后提供一个方法可以将flag设置为false但这个方式的问题就是:如果线程内部死锁了或者阻塞了,就无法结束该线程。补偿机制是:HttpClient中的操作,需要设置默认超时时间。 置标志位是初级的做法,高级的做法还是使用interrupt但是,你要清楚的是interrupt的含义,java本身并没有说调用了interrupt就终止了线程,相反,这需要自己去实现interrupt的语义 哥,比如50条线程,HttpClient 设置默认超时2秒,万一50条全超时,那么系统就会退出运行啦,如何才能使超时的再继续运行httpclient呢? 即便HttpClient超时,你也可以不要退出循环的啊client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);while (flag) { try { // 请求服务器URL } catch (org.apache.commons.httpclient.ConnectTimeoutException ex) { // 准备继续重试 }} 工厂设计模式在JDK API中的哪些类中用到过? 关于java连接mysql创建表 《JAVA编程思想》中关于迭代器的疑问 在java中怎么向串口发送回车符号? 请问五子棋禁手算法的思路? 如何判断字符串中带有指定的字符串? 如何处理字符当中包含UTF-8编码的中文 一个很简单的问题 gml是什么文件? 有谁可以提供一个简单的class给我.要求是打开一个指定路径文本文件.把它的内容读出来.用System.out.println显示 在Jbuilder下怎样做可以直接运行jar? 如何将一个JAVA类运行的结果输出到JComboBox选项中 collection输出结果
结束线程的一般推荐做法是run()函数中,while(flag) { 循环的工作 }
然后提供一个方法可以将flag设置为false
但这个方式的问题就是:如果线程内部死锁了或者阻塞了,就无法结束该线程。
补偿机制是:HttpClient中的操作,需要设置默认超时时间。
哥,比如50条线程,HttpClient 设置默认超时2秒,万一50条全超时,那么系统就会退出运行啦,如何才能使超时的再继续运行httpclient呢?
while (flag) {
try {
// 请求服务器URL
} catch (org.apache.commons.httpclient.ConnectTimeoutException ex) {
// 准备继续重试
}
}