`

关闭底层资源强行中断

阅读更多
对于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

分享到:
评论

相关推荐

    Xilinx FPGA底层资源架构与设计规范

    题主最近开始接触和FPGA的方案验证相关的工作内容,需要把握FPGA内部资源的详细信息,所以又仔细查看了官方的器件手册。这一次给大家分享的内容主要涉及Xilinx FPGA内的CLBs,SelecTIO和Clocking资源,适合对FPGA...

    中断大全资料,中断号,中断功能,中断参数

    中断大全资料涵盖了计算机系统中所有可能的中断,包括中断号、中断功能以及中断参数,是理解和调试系统底层运行的关键资源。 在计算机体系结构中,中断被分为两类:硬件中断和软件中断。硬件中断是由外部设备(如...

    计算机组成原理 MIPS三级时序中断机制实现(HUST) 实训代码

    这个阶段主要完成一些基本的保护工作,例如关闭中断源,防止中断嵌套。 2. **中级中断处理**(Second Level Interrupt Handler,SLIH):在初级处理之后,中级处理接手,通常涉及更复杂的系统服务,如更新中断统计...

    STM32中断配置器,懒人STM32,一键搞定32定时器和外部中断

    通过使用STM32中断配置器,开发者可以专注于应用程序逻辑,而无需过多关注底层硬件细节,提高开发效率,减少错误,使得STM32的中断管理变得更加容易。这款工具对于初学者和经验丰富的工程师来说都是一种宝贵的资源,...

    DSP6678GPIO中断程序

    本文将深入探讨如何在Texas Instruments的DSP6678处理器上实现GPIO中断,包括底层代码实现、中断跳转、中断机理以及中断向量表的配置。 首先,了解GPIO中断的基本概念。GPIO中断允许处理器通过检测GPIO引脚电平的...

    STM32F030 IO口外部中断应用

    标题中提到的“STM32F030 IO口外部中断应用”,其中的STM32F030是一种...文档不仅给出了完整的初始化流程,还涉及到了底层函数和配置寄存器操作,对于希望深入理解STM32外设编程和中断管理的读者具有很大的参考价值。

    中断响应仿真-Protues Keil C51

    6. **中断禁止和中断允许**:通过特定的寄存器位,我们可以控制中断的开启和关闭,这在需要避免中断干扰或保护关键代码段时非常有用。 7. **Protues仿真**:在Protues环境中,我们可以设置中断源,例如通过按键模拟...

    汇编语言指令中断大全

    在IT领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,直接对应于计算机硬件的...通过`INTWIN.GID`和`INTWIN.HLP`等资源,开发者可以深入了解Windows系统下的汇编中断,从而编写出高效、精确的系统级代码。

    Android底层开发技术实战详解_android底层_

    《Android底层开发技术实战详解》是一本面向Android底层开发者的专业书籍,旨在深入解析Android系统的内核层次结构、驱动程序开发、性能优化等关键领域的知识。本书内容丰富,覆盖了从硬件接口到软件实现的各个层面...

    C语言中断设计实现

    虽然这部分内容似乎与中断程序设计关系不大,但它提供了一些关于硬件资源管理和DOS分区的背景知识,这在理解计算机系统的底层操作时同样重要。DOS分区的管理策略直接影响到硬盘空间的利用率和软件开发效率。当盘区...

    STM32 串口中断程序

    总的来说,STM32串口中断程序设计涉及到嵌入式系统的底层通信协议、中断机制和微控制器的硬件特性,是开发过程中的关键环节。通过理解这些知识点,开发者能够有效地实现高速、低延迟的数据传输。

    89C52中断与定时器(比较完善的底层可直接应用于工控)

    89C52是一款经典的8位单片机,由美国Atmel公司生产,内置了丰富的硬件资源,包括多个中断源和两个定时/计数器。中断系统是单片机处理外部事件的关键机制,它允许CPU在执行正常程序的同时,对突发事件进行快速响应。...

    6410按键中断裸机程序

    7. **中断服务子程序**:中断服务程序是处理中断事件的函数,应快速高效,避免长时间占用CPU资源。通常需要清除中断标志、执行相应处理逻辑并最终恢复中断状态。 8. **中断优先级**:中断控制器可以设置中断优先级...

    linux下中断处理程序示例,含驱动和应用程序

    总的来说,这个示例涵盖了从驱动开发到应用程序的完整中断处理流程,是学习Linux中断系统和驱动开发的宝贵资源。通过分析和实践这些代码,开发者可以深入理解中断处理的原理,提高在Linux环境下的系统级编程能力。

    ecos中断操作说明

    ECOS通过硬件抽象层(HAL)来隐藏底层硬件中断系统的具体实现细节,使得开发者能够专注于中断事件的处理,而不必关心底层硬件的具体差异。 在传统的中断处理程序中,通常需要为每种特定的硬件平台编写中断服务程序...

    6410裸机按键中断

    在6410处理器中,我们需要配置中断控制器来开启或关闭特定的中断源,如按键中断,并设置中断优先级。 在6410裸机按键中断的实现中,首先需要设置GPIO引脚作为输入模式,用于检测按键状态。当按键被按下时,对应的...

    8086中断手册(汇编学习必备)

    汇编语言是与硬件紧密相关的编程语言,通过学习8086中断手册,你可以掌握如何直接控制硬件资源,实现更高效的程序设计。比如,你可以编写中断处理程序来优化系统的响应时间,或者创建自定义的设备驱动来扩展系统功能...

    使用定时中断方式与ds18b20通信

    4. 关闭中断,避免频繁的中断影响其他任务。 在DS18B20.c和DS18B20.h这两个文件中,通常会包含DS18B20通信的底层驱动代码和接口定义。`DS18B20.c`文件可能包含了具体的中断服务函数实现和相关操作函数,如`...

    中断控制器8259演示文件

    8259的编程接口包括两个端口,一个用于写入初始化命令和操作命令(ICW和OCW),另一个用于读取和写入中断屏蔽字,控制中断的开启和关闭。中断屏蔽字允许系统根据需要动态地启用或禁用中断。 "8259演示系统"可能是...

Global site tag (gtag.js) - Google Analytics