`
flyfoxs
  • 浏览: 298170 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

详解JAVA线程的中断

 
阅读更多

多线程之--2种办法让HashMap线程安全

多线程之--synchronized 和reentrantlock的优缺点

多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)

多线程之--详解JAVA线程的中断

 

中断线程,并不是直接的中断一个线程,需要依赖于当前线程的状态,有如下几点需要需要注意:

 

1) 除非当前线程中断自己(这个总是被允许的), 否则就会触发checkAccess 这个方法,这样就有可能抛出异常SecurityException .

 

2) 如果线程被Object的方法 wait(), wait(long), or wait(long, int)锁阻塞,或者是被当前线程的方法join(), join(long), join(long, int), sleep(long), or sleep(long, int)所阻塞. 线程的interrupt 状态会被重置,并且收到异常InterruptedException.

 

3) 如果线程被I/O操作( 与 interruptible channel 相关的I/O操作)所阻塞, 那么channel就会被关闭, 线程的interrupt 会被设置, 并且线程也会收到异常ClosedByInterruptException

 

4) 如果线程被Selector所阻塞, 线程的interrupt 状态也会被置位,并且立马从selection 方法返回,返回结果可能并不是0,就好像Selector.wakeup被调用了一样.

 

5) 如果上面几种情况都没用, 那么就对状态interrupt 进行置位.

 

6) 中断一个不是alive的线程是没有任何效果的,比如线程还没有运行run方法,就运行interrupt()是不会有效果的. 线程有多少状态,可以参考java.lang.Thread.State

 

注;上面主要内容翻译至JavaDoc

0
0
分享到:
评论
2 楼 flyfoxs 2014-08-19  
cwqcwqmax9 写道
讲的比较分散,没有详细的集中对所有场景说明 ,感觉遗漏部分

谢谢指点.因为直接翻译的JAVA Doc,然后添加一些自己的理解.所以讲的可能不是很系统.但是应该覆盖面应该是全的,因为是来源渔 Java Doc的.
1 楼 cwqcwqmax9 2014-08-19  
讲的比较分散,没有详细的集中对所有场景说明 ,感觉遗漏部分

相关推荐

    详解Java线程中断知识点

    Java线程中断是多线程编程中一个关键的概念,它允许一个线程在运行时被其他线程“通知”停止其当前活动。线程中断不是立即终止线程,而是发送一个中断信号,由目标线程自己决定如何响应这个信号。在Java中,线程中断...

    Java线程详解大全

    Java线程是并发编程的核心部分,它允许程序在同一时间执行多个独立的任务,从而提高系统效率和响应速度。本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要...

    Java-并发-Java线程中断与停止线程详解

      Java 中的线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是被中断的线程根据中断状态自行处理。即“线程中断”并不是字面意思——线程真的中断了,而是设置了中断标志...

    java线程中断之interrupt和stop.docx

    ### Java线程中断机制详解:`interrupt`与`stop`方法 #### 一、引言 在Java多线程编程中,线程控制是至关重要的技术之一。有时我们需要在特定条件下停止某个线程的执行,或者中断正在等待的线程。Java提供了多种...

    Java多线程详解及示例

    6. 线程中断与守护线程 Thread类提供了interrupt()方法用于中断线程,但需要注意的是,这并不意味着线程会立即停止,而是在线程检查到中断标志后自行决定是否停止。守护线程(Daemon Thread)是一种特殊线程,当所有...

    Java多线程详解

    以上是对"Java多线程详解"主题的详细阐述,涵盖了Java多线程的基本概念、实现方式、线程控制、线程池、并发集合、线程间通信以及并发编程中常见的问题和解决方案。学习和熟练掌握这些内容对于开发高效的多线程Java...

    java 多线程设计模式 进程详解

    线程中断 静态方法(有关同步的细节) 总结 第五章 Java线程编程的例子 数据结构和容器 简单的同步例子 一个网络服务器类 AsyncInputStream类 使用TCPServer和AsynclnputStream 总结 第六章 Java线程调度 线程...

    java多线程详解

    ### Java多线程详解:深度探索Java线程机制 #### 知识点一:线程与进程的区别 在深入探讨Java多线程之前,我们首先需要理解线程与进程的基本概念及其区别。进程是资源分配的基本单位,拥有独立的内存空间,而线程...

    java多线程中断代码详解

    Java 多线程中断代码详解 Java 中断机制是多线程编程中的一种重要机制。它允许一个线程请求另一个线程停止执行某个操作或退出线程。Java 提供了多种方式来中断线程,包括使用 stop() 方法、interrupt() 方法和使用 ...

    java多线程详解(比较详细的阐述了多线程机制)

    Java多线程还涉及到线程中断和异常处理,Thread类提供了interrupt()方法发起中断请求,线程可以通过检查isInterrupted()或isInterrupted()状态响应中断。在多线程环境中,异常处理也需特别注意,合理的try-catch-...

    JAVA线程深入了解

    #### 一、JAVA线程启动方式详解 ##### 1. 利用`Thread`类的子类启动线程 在Java中,可以通过继承`Thread`类来创建一个新的线程。这种方式相对直观,易于理解。具体做法是创建一个`Thread`类的子类,并重写其`run`...

    java线程 线程学习资料 java线程教程

    ### Java线程教程知识点梳理 #### 一、教程概述 - **目标读者**: 本教程主要面向具备丰富Java基础知识但缺乏多线程编程经验的学习者。 - **学习成果**: 学习者能够掌握编写简单的多线程程序的能力,并能够理解和...

    Java 线程详解

    Java 线程详解 在 Java 编程语言中,线程是一种基本的编程单元,它允许开发者在一个程序中执行多个任务。线程是轻量级的进程,它可以与其他线程共享同一个进程的资源。线程的使用可以提高程序的效率和响应速度。 ...

    java多线程设计模式详解

    Java多线程设计模式是Java编程中不可或缺的一部分,它涉及到如何在并发环境下高效、安全地组织代码...阅读提供的"java多线程设计模式详解.pdf"和"Java多线程设计模式源码"文件,将能更深入地理解这些模式的实际运用。

    Java线程书

    ### Java线程基础知识详解 #### 一、引言 随着计算机技术的发展,多核处理器已经成为了标配,这为多线程编程提供了强大的硬件支持。Java作为一种广泛应用的编程语言,在其设计之初便内置了对线程的支持,使得...

    java多线程设计模式详解(PDF及源码).zip

    此外,还有线程中断、线程池、线程优先级、守护线程等相关概念,它们都是Java多线程编程的重要组成部分。 通过阅读“java多线程设计模式详解(PDF及源码)”的资料,我们可以深入了解这些知识点,并通过提供的源码...

    Java多线程之中断线程(Interrupt)的使用详解

    Java中的多线程允许并发执行多个任务,而中断机制是Java提供的一种优雅地停止线程执行的方式。`Thread.interrupt()`方法是中断线程的主要手段,但它的行为并不像字面意义上那样直接终止线程。相反,它通过设置线程的...

    java多线程编程详解

    Java线程有10个优先级,`Thread.NORM_PRIORITY`是默认优先级,`Thread.MIN_PRIORITY`和`Thread.MAX_PRIORITY`分别是最低和最高优先级。优先级高的线程更有可能获得CPU时间片。 6. **线程池**: `java.util....

    Java多线程详解与多线程实例

    总的来说,Java多线程提供了强大的并发处理能力,通过继承Thread类或实现Runnable接口创建线程,使用同步机制确保线程安全,以及通过中断机制控制线程的生命周期。理解并熟练掌握这些概念对于编写高效、健壮的多线程...

Global site tag (gtag.js) - Google Analytics