`
fanshaohua110
  • 浏览: 7370 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA中断线程Thread.interrupt()

阅读更多
多线程编程中我们经常会遇到一个问题,怎样中断一个线程?

Thread 类提供了三种方法:

interrupt : 中断线程
isInterrupted ; 返回线程的中断状态.
interrupted ; 读取并清除中断状态.

Thread.interrupt().字面上意思是中断线程。实际上它只是将线程状态置为中断状态,并不会直接中断线程。

Java 中断作为一种协作机制。中断只是告诉被中断线程一个信号。被中断的线程可以在合适的时机中断,也可以不做任何处理。

对于非阻塞的线程,调用Thread.interrupt()只会将线程中断状态设置为true.但是线程并不会中断。

对于阻塞的线程。例如调用了sleep,wait,join等方法线程。当调用Thread.interrupt方法后会抛出InterruptedException,并将中断状态置为false.
此处说明下: 只有当线程正处与阻塞状态中调用Thread.interrupt()才会出现上述情况。当线程虽然调用了sleep,wait,join等方法。但是该线程已经不在处于阻塞状态,不会抛出异常。
另外 java中原始I/O和内部锁不支持中断。

分享到:
评论

相关推荐

    浅谈Java线程Thread之interrupt中断解析

    Java线程Thread之interrupt中断解析 Java线程Thread之interrupt中断机制是Java多线程编程中的一种重要机制。通过调用Thread.interrupt()方法,可以设置线程的中断状态位,线程会不时地检测这个中断标示位,以判断...

    java中断线程的正确姿势完整示例.rar

    本示例将详细探讨Java中断线程的正确方法,以确保线程安全且高效地退出。 首先,我们需要了解Java中的线程中断机制。线程中断是通过调用`Thread.interrupt()`方法来实现的,它会设置线程的中断标志。当线程正在运行...

    java线程中断之interrupt和stop.docx

    `interrupt`方法是一种更安全的方式,它通过改变线程的状态来中断线程,而不会直接结束线程的生命。相比之下,`stop`方法虽然可以直接终止线程,但由于其可能导致的问题,不推荐使用。在实际开发中,建议优先考虑...

    java多线程例子.pdf

    中断线程是通过调用线程的interrupt()方法来实现的。线程在阻塞时,如调用了sleep()方法,可以响应中断并抛出InterruptedException异常。通过检查线程的中断状态(使用interrupted()或isInterrupted()方法),可以...

    java多线程1.ppt

    通过`Thread.interrupt()`方法可以请求中断线程,但线程是否立即停止取决于其当前状态和具体实现。通常,线程会在阻塞状态(如`sleep()`, `wait()`, `join()`)时检查中断标志,并相应地抛出`InterruptedException`...

    java多线程例子.doc

    `interrupt()`方法用于中断一个线程,设置线程的中断标志位。而`interrupted()`和`isInterrupted()`都是用来检查线程是否被中断。`interrupted()`会清除中断标志位并返回当前状态,因此只能使用一次;`isInterrupted...

    java多线程试题.pdf

    11. `join()`方法使线程A等待线程B完成,`interrupt()`可以中断阻塞状态,`isAlive()`检查线程是否正在执行,而`currentThread()`获取当前线程引用,因此选项D错误。 12. 对象锁在同步块执行完或抛出异常时由持有它...

    Java线程如何终止.pdf

    public class ThreadInterrupt extends Thread { public void run() { try { Thread.sleep(50000); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } // ... } ``` 在这个...

    java线程强制停止的两个Demo

    推荐采用`Thread.interrupt()`结合`isInterrupted()`/`interrupted()`的方式来安全地中断线程,确保资源的正确释放和程序的稳定性。在编写多线程程序时,应尽量设计线程在接收到中断信号后能够优雅地退出,而不是...

    java_Thread.rar_java 多线程_java多线程

    - interrupt():中断线程,线程内部需要处理中断标志来响应中断。 - synchronized:用于控制并发访问共享资源,防止数据不一致。 此外,Java还提供了高级线程管理工具,如: - ExecutorService和ThreadPoolExecutor...

    Java中interrupt的使用.docx

    在Java编程中,中断线程是一项重要的任务,用于在程序执行过程中优雅地停止某个线程。传统的`Thread.stop()`和`Thread.suspend()`方法由于可能导致数据不一致和资源泄漏等问题,已被弃用。取而代之的是使用中断机制...

    Java多线程编程的Java中的线程.docx

    1. 线程控制:Java提供了丰富的API来控制线程,如`sleep()`, `join()`, `yield()`, `interrupt()`, `isInterrupted()`等,用于暂停、等待、让步和中断线程。 2. 线程同步:为了防止多个线程同时访问共享资源导致数据...

    java线程中的interrupt,isInterrupt,interrupted方法

    需要注意的是,interrupt 方法仅仅设置了线程的中断状态标志,并不会真正地中断线程。要中断线程,需要在 run 方法中检查中断状态标志,并根据需要退出或中断线程。 isInterrupted 方法 isInterrupted 方法用于...

    java多线程.rar

    `Thread.interrupt()`方法用于中断线程,线程可通过检查`Thread.currentThread().isInterrupted()`或`Thread.interrupted()`来响应中断请求。 7. **守护线程(Daemon Thread)**: 守护线程不阻止程序退出,例如...

    java通过线程控制程序执行超时(新)

    // 超时后中断线程 } ``` 基本数据类型在超时控制中主要体现在计算或比较操作上,例如,我们可以用long类型的变量记录开始时间,然后在超时检查时与当前时间进行比较。反射则允许我们在运行时动态获取类、方法和...

    java线程安全总结.pdf

    - `Thread.interrupt()` 方法用于中断线程,但不会立即终止线程,而是设置中断标志。 - 使用`InterruptedException` 异常处理,及时恢复中断状态,以便其他线程可以感知中断。 理解和掌握这些Java线程安全机制是...

    Java如何中断一个正在运行的线程[整理].pdf

    其次,`Thread.interrupt()`方法的名字可能误导人以为它可以立即中断线程。实际上,`interrupt()`方法并不直接停止线程,而是设置线程的中断状态标志。当线程在某些阻塞操作(如`Thread.sleep()`, `Object.wait()`, ...

Global site tag (gtag.js) - Google Analytics