Java如何中断Http请求线程
来源:互联网 发布:python 执行shell命令 编辑:程序博客网 时间:2024/05/22 17:44
今天刚好有位同事问我,用Java请求Http的时候,有时候不希望阻塞太长时间,想做个监视然后可以中断请求的。
他的请求是放在独立线程中的,那么怎样中断一个请求?
我们先看看Thread的interrupt方法,能否做到这一点:
关于中的安全检查机制这里就不讨论了。我们只看interrupt能做什么。首先分几种情况:
1、线程被wait、join、sleep等方法阻塞时,interrupt将清除一个中断状态并接收到一个InterruptedException异常。
2、如果线程是被IO操作阻塞的,且这个IO是基于InterruptibleChannel的,那么这channel将被关闭,thread的中断状态将被设置,而且thread会收到一个java.nio.channels.ClosedByInterruptException异常。
3、如果这个线程是被阻塞在 java.nio.channels.Selector的,那么线程的中断状态将被设置并且将立刻从selection操作中返回,可能会返回非0值,就像wakeup方法被调用的那样。
如果不是上面三种情况之一的,那么线程的中断也会被设置。
那这样就很明显了。只要你的Http请求是使用InterruptibleChannel或者 java.nio.channels.Selector请求的,都可以通过interrupt来中断。
当然,最简单的做法是,使用你Http请求里面的超时设置(很多Http请求的API都有超时设置啦,你不相信去查查apache的HttpClient)!!没错,看了这篇文章,你会发现,只有这一行是有用的!
- Java如何中断Http请求线程
- 如何中断JAVA线程
- 如何中断JAVA线程
- 如何中断JAVA线程
- 如何中断JAVA线程
- Java线程中断机制-如何中断线程
- 如何中断线程in Java
- 如何中断线程in Java
- 如何中断线程in Java
- Java中如何中断线程?
- Java多线程——如何中断线程
- Java线程:线程中断
- JAVA如何取得HTTP请求头
- JAVA如何取得HTTP请求头
- 如何中断线程
- 如何中断Android线程
- 如何中断Android线程
- 如何中断线程?
- android-GestureDetector的使用-随心
- Linux驱动开发之四-----LED改进测试(增加自动创建设备节点)
- (转)cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)
- onItemClick(AdapterView<?> arg0, View arg1, int arg2, long&n
- while ( (c = getchar())!= EOF)
- Java如何中断Http请求线程
- Linux 开机脚本启动顺序--inittab脚本启动解析
- tomcat
- C++ Boost库 asio同步/异步模式[ 定时器来体现 ] 笔记
- mono touch中,UISlider控件的使用
- java swing应用(4):实现一个精美的时钟
- 网站申请与部署
- NSNotificationCenter的使用
- 黑马程序员——java常用转义字符