对于IO这种资源无法通过interrupt()方法中断,但是在实际应用中想中断的话,可以尝试关闭任务在其上发生中断的底层资源。
=================
public class IOBlocked implements Runnable{
private InputStream is;
public IOBlocked(InputStream is) {
this.is=is;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Waiting For Read...");
try {
is.read();
} catch (IOException e) {
// TODO Auto-generated catch block
if(Thread.currentThread().isInterrupted()){
System.out.println("Interrupted from blocked I/O");
}else{
throw new RuntimeException(e);
}
}
System.out.println("Exiting IOBlocked.run()");
}
}
========================强行中断方法==================
public class CloseResource {
public static void main(String[] args) throws Exception{
ExecutorService exec=Executors.newCachedThreadPool();
ServerSocket server=new ServerSocket(8080);
InputStream socketInput=new Socket("localhost",8080).getInputStream();
exec.execute(new IOBlocked(socketInput));
exec.execute(new IOBlocked(System.in));
TimeUnit.MILLISECONDS.sleep(100);
System.out.println("shut down all threads");
exec.shutdownNow();
TimeUnit.SECONDS.sleep(1);
System.out.println("closing "+socketInput.getClass().getName());
socketInput.close();
TimeUnit.SECONDS.sleep(1);
System.out.println("closing "+System.in.getClass().getName());
System.in.close();
}
}
-----------------执行结果如下:
Waiting For Read...
Waiting For Read...
shut down all threads
closing java.net.SocketInputStream
Interrupted from blocked I/O
Exiting IOBlocked.run()
closing java.io.BufferedInputStream
分享到:
相关推荐
题主最近开始接触和FPGA的方案验证相关的工作内容,需要把握FPGA内部资源的详细信息,所以又仔细查看了官方的器件手册。这一次给大家分享的内容主要涉及Xilinx FPGA内的CLBs,SelecTIO和Clocking资源,适合对FPGA...
底层驱动通过中断上传键值,上层框架获取键值后处理
在DSP6678下面产生中断,有底层实现代码,中断跳转,中断机理,实现的过程注释。中断向量表。
CloudEon将基于Kubernetes的资源安装部署开源大数据组件,实现开源大数据平台的容器化运行,可减少对于底层资源的运维关注
CloudEon云原生大数据平台。CloudEon基于Kubernetes资源安装部署开源大数据组件,实现开源大数据平台的容器化运行,可减少对于底层资源的运维关注。
NT底层安全类,NT底层安全类,NT底层安全类,NT底层安全类
从虚拟网络的角度考虑虚拟网络对底层资源的选择问题,将虚拟网络对底层网络中物理路径的自主选择抽象成一个演化博弈,虚拟网络通过反复博弈学习来调整物理路径的选择。利用模仿者动态方程分析博弈中不同策略的比例...
文中对LPC3250底层汇编的中断代码进行了详细的分析,对中断机制进行了整理,并对ucos系统下关于中断移植以及任务切换的移植进行了分析。
通信控制跑马灯的例子,用中断实现同时让跑马灯和数码管同时地、互不干扰地独立工作。把跑马灯换成电磁阀或继电器,即可移植到工控的实际应用中。运行方法:用Keil51打开压缩包里的"1.uv2
Go语言底层原理剖析.pdf
matlab_基于匹配理论的设备间底层通信资源分配
该书对从事android底层开发者有一定的帮忙
在PC机IE6+以及安卓和ios浏览器通用。其中Util通用类,vml和svg矢量画图类参照了Openlayers中通用写法。核心类 Map类、Display类、Transform类、Control类,全部底层开发。
飞思卡尔K60野火底层库,拉普兰德底层库及其使用教程,以前做智能车时积累的资源
计算机组成原理之 PC 中断调用大全.pdf,计算机的底层原理
本文档详细的介绍了 php底层的工作原理 .文档转自网络
成功从底层开始成功从底层开始
NTFS文件系统底层挖掘 NTFS文件系统底层挖掘 NTFS文件系统底层挖掘 NTFS文件系统底层挖掘
这是我跟着网络牛人和经典书籍《linux设备驱动程序》学习linux底层驱动时摘抄和自写的学习笔记,希望对大家有用,源代码我之后上传。
2019年B19底层写锁工具及底层,网络计划补丁。用于带底层的密码锁写锁,并且带了很多地区及行业的切换模块。只限于个人交流,不得用于商业用途。