当线程的run()方法执行方法体中最后一句语句后,并经由执行return语句返回时,或者出现了方法中没有捕获的异常时,线程将终止。
sleep : 该方法为static,并返回void值,在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),阻塞线程,所以只对当前运行线程起作用。与用类还是实例调用无关。
interrupt : 强制终止线程,并返回void值,当一个线程调用interrupt()方法可以用来请求终止线程。当对一个线程调用interrupt()方法时,线程的中断状态将被置位。但是如果线程被阻塞(调用sleep, wait),就无法检测中断状态,这是产生InterruptedException异常的地方。即如果目前线程被一个sleep调用阻塞,那么会抛出InterruptedException异常。
isInterrupted : 测试线程是否已经中断,想要弄清中断状态是否被置位,首先调用Thread.currentThread方法获得当前线程。然后调用isInterrupted方法。该方法不会抛出异常,如果该线程已经中断,则返回 true;否则返回 false。
interrupted:该方法为static,测试当前线程是否已经中断,它检测当前的线程是否被中断,并清除中断状态。线程的中断状态 由该方法清除 ,如果连续两次调用该方法, 则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。
currentThread : 该方法为static,返回代表当前执行线程的Thread对象。
Thread.currentThread().isInterrupted()
注意: 如果任何线程中断了当前线程。当抛出该异常时,当前线程的中断状态 被清除。
在不要在其他代码中catch Thread.sleep(xx)抛出的java.lang.InterruptedException: sleep interrupted,统一传递到run()方法中处理。
e.g. public void mySubTash() throws InterruptedException{... sleep(delay); ...}
分享到:
相关推荐
在Linux操作系统中,中断线程化是一种将中断处理与用户空间任务解耦合的技术,它允许中断处理程序在后台执行,从而改善系统响应时间和资源管理。2.6.25.8内核版本引入了这一特性,使得中断处理更加灵活且高效。 ...
C++11关于thead的应用,利用std::condition std::mutex提供如何中断,停止和继续功能,
在Java编程中,中断线程是一项重要的任务,它允许程序在必要的时候停止或者结束一个正在运行的线程。本教程的压缩包包含了中断线程的源代码实例和详细指导,旨在帮助开发者深入理解和掌握这一核心概念。以下是关于...
在Java编程中,中断线程是一项重要的任务,特别是在多线程环境下,我们可能需要停止某个线程的执行,以优化程序资源的使用或响应特定的系统需求。本示例将详细探讨Java中断线程的正确方法,以确保线程安全且高效地...
#### 二、CPU中断概述 CPU中断是指处理器在执行指令过程中被突然打断的现象。这种打断通常由硬件设备发起,目的是通知CPU发生了某些重要的事件(如外设完成数据传输、定时器到达等),需要CPU立即处理。根据中断源...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
以下是对Java中断线程的详细解释: 1. **线程终止条件**: - 当`run`方法执行完毕。 - `return`语句执行,提前结束`run`方法。 - 出现未捕获的异常,导致`run`方法终止。 2. **`stop`方法的弃用**: Java早期...
在Linux系统中,栈可以分为进程栈、线程栈、内核栈以及中断栈。 首先,我们需要了解栈(Stack)的基本概念。栈是一种后进先出(LIFO, Last In First Out)的数据结构,它允许数据被存储和检索,但只允许在一段称为...
`Thread.interrupt()`方法是中断线程的主要手段,但它的行为并不像字面意义上那样直接终止线程。相反,它通过设置线程的中断状态来向线程发送一个中断信号,这个信号是一个内部标志,告知线程应该停止其当前的工作。...
Windows采用了抢占式多任务调度策略,这意味着具有更高优先级的线程可以中断当前执行的线程,从而获取CPU时间。Windows提供了多种线程优先级级别,从IDLE_PRIORITY_CLASS到REALTIME_PRIORITY_CLASS,其中NORMAL_...
Java并发编程中的线程中断是一个关键机制,它允许开发者在程序运行过程中显式地请求某个线程停止执行。在本示例中,我们创建了一个名为`PrimeGenerator`的线程,该线程会不断地查找并打印质数。线程中断机制的使用...
// 超时后中断线程 } ``` 基本数据类型在超时控制中主要体现在计算或比较操作上,例如,我们可以用long类型的变量记录开始时间,然后在超时检查时与当前时间进行比较。反射则允许我们在运行时动态获取类、方法和...
中断线程的处理是确保应用响应性和用户体验的关键。本篇将详细讲解如何在Android中正确地中断线程,以及处理中断后的工作。 首先,Android中的线程中断主要是通过`Thread.interrupted()`或`Thread.currentThread()....
6. **原子操作(Atomic Operation)**:这是在多线程环境中执行不会被中断的操作,例如自增或自减,以确保数据一致性。 然而,多线程通信也存在潜在的危险。其中最常见的问题是**竞态条件(Race Condition)**,即多个...
- interrupt()方法用于中断线程,如果线程正在阻塞(如sleep或wait),会被中断并抛出InterruptedException。 通过这些技术,我们可以构建高效、稳定、响应迅速的多线程应用程序。在实际开发中,应根据具体需求...
线程控制是Java多线程编程中的重要概念,包括中断、挂起、恢复和停止。本实例将深入探讨这些主题,帮助你更好地理解和掌握Java中线程的高级操作。 1. **线程中断**: Java通过`Thread.interrupt()`方法提供线程...
1. 使用 Thread.interrupt() 方法设置线程的中断标志,但是这并不能真正中断线程,而是通知线程可以被中断。 2. 使用 ScheduledThreadPoolExecutor 来延迟执行任务,任务中执行线程的 interrupt() 方法。 使用 ...
如果handler thread的状态不是`waiting`,中断线程的消息寄存器会被设置,伙伴设置为handler thread,状态改为`polling`,然后将中断线程放入handler thread的发送列表。 在L4中,中断线程(irq thread)、当前运行...
在IT领域,硬件中断和IDLE线程设计是操作系统中至关重要的部分,它们与系统性能、实时性以及资源管理紧密相关。以下是对这些概念的详细解释: 1. 前景/后台处理(Foreground / Background Processing): 操作系统...
`interrupt`方法是一种更安全的方式,它通过改变线程的状态来中断线程,而不会直接结束线程的生命。相比之下,`stop`方法虽然可以直接终止线程,但由于其可能导致的问题,不推荐使用。在实际开发中,建议优先考虑...