`
xylong
  • 浏览: 193799 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何有效处理interruptException异常

阅读更多

对于如何有效处理interruptException异常,

参见大湿Brian  Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp05236.html

                                                         http://agapple.iteye.com/blog/970055

 

再贴上简单代码演示interruptException异常如何发生?

 

 

public class InterruptCause {

	public static void main(String[] args) {
		InterruptCause itc = new InterruptCause();
		InterruptThread interuptThread = itc.new InterruptThread();
		interuptThread.start();
		try {
			Thread.sleep(2000L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		interuptThread.interrupt();
		System.out.println("没有什么?");
	}
	
	class InterruptThread extends Thread{
		@Override
		public void run() {
			System.out.println("线程名称:"+Thread.currentThread().getName());
			try {
				Thread.sleep(3000L);
				//Thread.sleep(1000L);//两种方式导致结果是不一样的
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

    对于睡眠3s,还是1s是针对main主线程的2s而设置,如果睡眠3s则会出现interruptException异常,而1s是不会发生    的,是因为3s会导致主线程优先执行interrupt方法导致的!

 

分享到:
评论

相关推荐

    Interrupt and Exception

    **中断**(Interrupt)和**异常**(Exception)都是在程序执行过程中发生的非正常事件,它们会导致CPU暂时停止当前任务的执行,并转向特定的处理程序进行处理。不同之处在于,中断通常是由外部设备触发的,如键盘或网络...

    Linux内核中的异常处理机制分析

    1. **异常向量表(Interrupt Vector Table)**:这是一系列指向特定异常处理函数的指针数组,当CPU检测到异常时,会根据异常类型跳转到相应的处理函数。 2. **异常上下文保存**:发生异常时,处理器会自动保存当前...

    线程终止异常(解决方案).md

    例如,在一个执行除法操作的线程中,我们可以捕获并处理ArithmeticException异常,这样即使发生除以零的操作,线程也不会因此终止,而是在catch块中通过输出异常信息等操作对异常进行处理,保持程序的持续运行。...

    对ARM异常(Exceptions)的理解

    3. 软件中断异常(Software Interrupt):由软件通过执行SWI指令产生,主要用于操作系统中的系统调用。 4. 预取指终止异常(Prefetch Abort):当处理器试图取指令时失败(如访问非法地址),会发生此异常。 5. ...

    com.cortexm3.exception.HardFaultException解决方案(亲测可用).md

    HardFaultException是在出现严重错误,如存储器访问违规、中断处理不当等问题时触发的硬件异常。由于这类问题的底层性,解决它们通常需要深入的硬件调试和对软件异常处理机制的理解。以下是一些解决步骤和代码示例,...

    Exceptions in MIPS.

    异常处理是计算机系统设计中的一个重要概念,它使得处理器能够响应并处理在程序执行过程中出现的非标准...在实际应用中,理解异常处理机制能够帮助开发者编写出更加健壮的程序,并有效地处理各种运行时错误和外部中断。

    第八章-异常控制流ECF1

    异常控制流(ECF,Exception Control Flow)是操作系统中至关重要的一个概念,它涉及软件与硬件之间的交互,以及系统如何管理资源和服务请求。在本文中,我们将深入探讨ECF的基本概念,异常处理机制,以及其在操作...

    com.cortexm4.exception.TimerOverflowException(解决方案).md

    为了解决这一问题,我们需要在系统中实现一个有效的异常处理机制。 首先,我们应当理解单片机的工作原理和中断处理机制。在单片机中,当定时器发生溢出时,通常会触发一个中断信号。处理器在接收到中断信号后,会...

    com.arm.cortexm.exception.NmiException(解决方案).md

    NMI(Non-Maskable Interrupt,不可屏蔽中断)异常可能是由于硬件故障造成的。在着手软件调试之前,应当排除硬件故障的可能性。这包括参考ARMCortex-M系列硬件手册,对相关的硬件组件进行检测,比如中断控制器、...

    interrupt_API.pdf

    handle_exception()函数与异常处理相关,它负责异常的识别和处理流程,包括调用中断服务例程以响应非预期的异常情况。这个函数通常与中断处理流程密切相关,因为在某些情况下,中断也可以被视为是一种特殊的异常。 ...

    com.cortexm3.exception.ExternalInterruptException解决方案(亲测可用).md

    通过正确的设置外部中断源、注册中断服务程序、在ISR中妥善处理异常,可以有效地解决`ExternalInterruptException`问题。上述的代码结构和方法提供了一种通用的框架,可以应用到各种具体的开发场景中,以实现稳定、...

    exception.TcpSessionTimeoutException(解决方案).md

    在进行网络开发的过程中,开发者们可能会遇到TCP会话超时异常(TcpSessionTimeoutException),这是一种常见的网络通信错误,尤其是...通过上述方法的综合运用,可以有效地解决TCP会话超时异常,保障网络通信的可靠性。

    com.sbc.exception.FirmwareUpdateFailureException解决方案(亲测可用).md

    固件更新是单片机等嵌入式系统中的重要操作,它确保了设备能够通过软件...通过上述策略和代码示例,开发者可以有效地处理固件更新中的异常情况,确保设备能够及时且正确地完成固件更新,从而保证设备的稳定性和可靠性。

    com.cortexm4.exception.NmiException解决方案(亲测可用).md

    3. **异常处理和调试**:在确认硬件和中断配置均无问题后,便可以使用调试工具来追踪代码执行过程,定位到可能导致NMI异常的代码位置或函数调用。在调试过程中,特别需要注意的是对栈的追踪分析,这有助于确定具体...

    ARM的64位架构研究.pdf

    当在较低异常级别(如EL0)发生异常时,控制会转移到较高级别(如EL1、EL2或EL3),这使得系统能有效处理异步事件,同时保证了系统安全和稳定性。 在硬件资源管理上,ASP(Architecture Support Package)扮演了...

    STM32F1F4系列编程手册

    编程手册详细描述了异常模型和异常处理机制,包括异常状态(Exception states)、异常类型(Exception types)、异常处理器(Exception handlers)、向量表(Vector table)、异常优先级(Exception priorities)、...

    com.avr.exception.TimerOverflowException解决方案(亲测可用).md

    遇到TimerOverflowException异常时,通过细致检查和配置定时器参数、合理处理溢出事件,以及在代码中妥善处理相关异常,可以有效避免定时器溢出问题。通过示例代码,我们可以看到如何为AVR单片机配置定时器,包括...

    com.avr.exception.TimerOverflowException(解决方案).md

    在开发基于AVR微控制器的项目时,我们可能会遇到一个常见的问题——...正确的配置和合理的代码实现,加上对系统性能的监控和优化,可以有效避免定时器溢出异常的发生,从而保证AVR项目的稳定运行。

    Java interrupt()方法使用注意_动力节点Java学院整理

    本文将深入探讨`interrupt()`方法的工作原理,以及如何有效地利用它来中断线程。 首先,`Thread.stop`方法是过时的,不安全的,因为它可能导致数据不一致和资源泄露。因此,开发者应该避免使用它。相反,`Thread....

Global site tag (gtag.js) - Google Analytics