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

关于线程中断的一点困惑,已解决

    博客分类:
  • java
 
阅读更多

二、对于处于sleep,join等操作的线程,如果被调用interrupt()后,会抛出InterruptedException,然后线程的中断标志位会由true重置为false,因为线程为了处理异常已经重新处于就绪状态。

我在运行thinking in java里中断的例子时,一直都很奇怪为什么在catch(InterruptedException e)的处理段里,thead.isInterrupted()返回的都是false,原来是已被重置。

 

四、不可中断的操作,包括进入synchronized段以及Lock.lock(),inputSteam.read()等,调用interrupt()对于这几个问题无效,因为它们都不抛出中断异常。如果拿不到资源,它们会无限期阻塞下去。

对于Lock.lock(),可以改用Lock.lockInterruptibly(),可被中断的加锁操作,它可以抛出中断异常。等同于等待时间无限长的Lock.tryLock(long time, TimeUnit unit)。

对于inputStream等资源,有些(实现了interruptibleChannel接口)可以通过close()方法将资源关闭,对应的阻塞也会被放开。

 

文章转自http://freewind886.blog.163.com/blog/static/6619246420107823439357/

分享到:
评论

相关推荐

    JavaScript是否可实现多线程 深入理解JavaScript定时机制

    JavaScript通过事件循环(Event Loop)和异步任务队列来实现这一点,使得它可以处理网络请求、定时器以及其他I/O操作,而不会阻塞主线程。 定时器`setTimeout`和`setInterval`是JavaScript中常见的异步工具。`...

    易语言-易语言多线程adsl宽带拨号

    在本案例中,我们讨论的主题是“易语言-易语言多线程ADSL宽带拨号”,这是一个关于网络连接和多线程编程的应用实例。 首先,我们要理解什么是ADSL宽带拨号。ADSL(Asymmetric Digital Subscriber Line)是非对称...

    IBM-PC汇编语言程序设计课后习题答案(第二版+沈美明)

    6. **中断处理**:了解中断的概念,包括软件中断和硬件中断,以及如何通过INT指令来处理中断。 7. **I/O操作**:学会如何使用IN和OUT指令进行设备输入输出,以及如何与BIOS和DOS系统调用接口。 8. **汇编与链接**...

    caozuoxit.zip_操作系统 第三版 答案

    这个压缩文件中的"操作系统学习.pdf"很可能包含了对书中习题的解答,这些答案可以帮助读者检查自己的理解,解决困惑,加快学习进度。同时,解答通常会提供额外的解释和例子,有助于深化对概念的理解。在自学或复习时...

    java爱好者必备JAVA解惑(pdf格式)

    《JAVA解惑》是一本专为Java爱好者设计的书籍,旨在帮助读者解决在学习和使用Java过程中遇到的各种问题。这本书以PDF格式提供,方便电子阅读和保存。在深入探讨Java编程语言的过程中,它覆盖了从基础概念到高级特性...

    操作系统课件和答案

    答案部分则对应于教材中的习题,可能包括选择题、填空题、简答题和计算题等,旨在检验学习者对理论知识的掌握程度,帮助解决学习过程中的困惑。 通过这些课件和答案的学习,你可以对操作系统的整体架构有深入理解,...

    progress_gestiondestock_progress_

    同时,可以添加取消按钮,通过设置一个标志并在后台线程中检查该标志来允许用户在搜索过程中随时中断。 总结来说,"progress_gestiondestock_progress_" 的主题是关于在Delphi中使用进度条组件优化库存管理系统的...

    Linux网络编程(第2版)随书源代码.rar

    2. 万卷图书论坛.url:这是一个快捷方式或链接,指向一个在线讨论平台,可能是作者或读者交流技术问题和经验的地方,对于解决阅读过程中遇到的困惑或者深入探讨书中内容非常有帮助。 3. 源代码.zip:这是本书核心的...

    Windows内核函数的命名解析

    Windows内核的编程世界充满了神秘,其中最令人困惑的或许就是那些看似无规律的函数命名。然而,一旦理解了这些命名规则,就如同打开了通往内核深处的一扇窗,使得阅读和理解内核代码变得容易许多。本文将深入探讨...

    网络游戏-一种切换游戏对象的方法及装置.zip

    8. **错误处理与异常恢复**:在实际运行中,可能会遇到各种异常情况,如网络中断、服务器故障等。因此,切换游戏对象时必须有完善的错误处理和异常恢复机制,保证游戏的稳定运行。 9. **安全机制**:考虑到网络游戏...

    一个界面显示“等待”处理的共有类

    2. **状态指示器**:“等待”界面就是一种状态指示器,它可以是动画、进度条或者简单的文本提示,用于告诉用户系统当前的状态,避免用户因为不知道发生了什么而感到困惑。 3. **异步编程**:在Java或Android等平台...

    EblueFTP v1.0.zip

    5. **多线程传输**:提高文件传输速度,尤其对大文件来说,多线程可以显著缩短下载时间。 6. **SSL/TLS加密**:保障用户的数据安全,通过加密连接保护文件传输过程中的隐私信息。 7. **日志记录**:记录每次连接和...

    秋秋网页下载器

    4. **线程管理**:软件可能允许用户调整下载线程数量,以平衡下载速度和系统资源的占用。 5. **保存路径**:用户可以自定义下载内容的保存位置,方便日后查找和管理。 6. **断点续传**:如果下载过程中因网络问题...

    Windows驱动开发技术详解.pdf

    作者从自身经历出发,说明了学习驱动开发初期可能会遇到的各种术语和概念,如中断请求级别、派遣函数、线程上下文和完成例程等。这些内容通常是抽象且难以理解的,因此,作者提供了一系列的解决方案,帮助读者克服...

    含含糊糊网络编程基础

    描述中提到的"含含糊糊"可能是指初学者在学习网络编程时可能会遇到的困惑,比如TCP/IP协议栈的工作原理、套接字API的使用、多线程处理并发连接等。网络编程需要理解网络协议,如TCP(传输控制协议)和IP(网际协议)...

    why_i_choose_Erlang

    ### Erlang:面向并发编程与高可靠性解决方案 #### 引言 随着信息技术的快速发展,特别是互联网服务的大规模扩张,对编程语言的需求也在不断变化。Erlang作为一种专注于高并发、分布式处理、持续服务以及热升级等...

    ucosii 操作系统开源代码

    5. **中断服务**:中断处理机制确保了系统对外部事件的实时响应。 6. **多线程并发**:UCOSII支持多个并发任务,使得嵌入式设备可以同时执行多项操作。 在描述中提到的“目前操作系统中只写一个测试任务”,意味着...

    Android编程实现加载等待ProgressDialog的方法

    这个过程确保了用户在应用程序执行后台任务时有一个良好的交互体验,避免用户因为长时间等待而感到困惑或沮丧。同时,通过使用ProgressDialog,开发者可以提供更友好的用户界面,提高应用的用户体验。

Global site tag (gtag.js) - Google Analytics