昨天试了试线程中断...代码如下:
public class Main extends Thread {
@Override
public void run() {
while(!this.isInterrupted()){
System.out.println("the thread is run ...");
try {
TimeUnit.SECONDS.sleep(1L);
} catch (InterruptedException e) {
e.printStackTrace(); // 开始没打印信息,就写了个 ignore
}
}
}
public void goOn(){
Main.interrupted();
if(!this.isInterrupted()){
run();
}
}
public static void main(String[] args) throws InterruptedException{
Main td = new Main();
System.out.println("``````````````````````````````````````");
td.start();
TimeUnit.SECONDS.sleep(2L);
System.out.println("use interrupt()...");
td.interrupt(); // ...不好用?
TimeUnit.SECONDS.sleep(4L);
System.out.println("use goOn()...");
td.goOn();
}
}
总是出现非预期结果.... 原因是错误信息没有打印.后来经论坛哥们提醒,看了下jdk,发现:如果线程在调用 Object
类的 wait()
、wait(long)
或 wait(long, int)
方法,或者该类的 join()
、join(long)
、join(long, int)
、sleep(long)
或 sleep(long, int)
方法过程中受阻,则其中断状态将被清除,它还将收到一个 InterruptedException
。
分享到:
相关推荐
三是错误处理和恢复机制,应对网络中断等问题;四是资源管理,避免过多线程导致系统资源浪费。 总结来说,这个压缩包提供的实例为我们展示了如何在VB环境中利用ActiveX组件实现多线程下载,通过学习源码,我们可以...
SYSBIOS系统开发入门-7-2-线程-硬件中断.mp4 SYSBIOS系统开发入门-7-2-线程-硬件中断.mp4
SYSBIOS系统开发入门-7-3-线程-软件中断.mp4 SYSBIOS系统开发入门-7-3-线程-软件中断.mp4
最后,"10_一天学会线程_线程中断.mp4"可能深入介绍了`interrupt()`和`isInterrupted()`方法的使用,以及如何处理中断异常`InterruptedException`。线程中断是一种协作机制,当一个线程被中断时,其他线程可以通过...
9. **线程中断**:通过Thread.interrupt()方法可以请求中断一个线程,线程在运行过程中应定期检查中断标志,以便优雅地结束运行。 10. **线程间的通信**:Java的BlockingQueue接口和相关的类(如ArrayBlockingQueue...
4. 线程中断和异常处理:文档提到了interrupted()方法,它可以用来判断当前线程是否已被中断。另外,sleep()方法可以让线程暂停执行指定的毫秒数,InterruptedException是当线程在休眠时被中断抛出的异常。 5. 线程...
生命周期管理包括线程的启动、暂停、恢复、停止和中断等操作,需要注意的是,直接终止线程可能导致资源泄漏,因此通常建议使用interrupt()方法。 通过"线程Demo.zip"中的实例,读者可以动手实践,观察和分析多线程...
3. `sleep(long millis)`:使当前线程休眠指定的毫秒数,期间可能会被其他线程中断。 4. `getState()`:获取线程的状态,如NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED等。 5. `setPriority(int ...
线程一旦开始,会持续运行直到完成其工作或者被显式中断。你可以使用`Thread.Abort`方法终止线程,但这是不推荐的,因为可能会导致数据不一致和资源泄露。更好的做法是设置标志让线程自我检查并优雅地退出。 8. **...
- interrupted()和isInterrupted():判断当前线程是否被中断,或者查询指定线程的中断状态。 7. 线程间通信: Java提供了wait(), notify(), notifyAll()方法来实现线程间的通信。这些方法作用于对象的监视器,...
* 通过操作系统自身的时钟中断,每次检测将ticks_blocked 减 1,如果减到 0 就唤醒线程。 四、blocked_thread_check 函数 * blocked_thread_check 函数用于检测线程的状态,如果ticks_blocked 减到 0 就唤醒线程。...
在IT领域,尤其是在移动开发和网络编程中,断点续传和多线程下载是两个重要的技术概念,尤其对于处理大文件的下载场景至关重要。在这个名为"人工智能-项目实践-多线程-断点续传与多线程下载.zip"的压缩包中,可能...
线程中断是Java提供的一个机制,通过调用Thread的interrupt()方法来设置中断标识位。但需要注意,这并不会立即停止线程,而是让线程自己检查中断标识位并决定是否结束。例如,通过一个循环检查Thread.currentThread...
3. Lock接口与ReentrantLock类:提供比synchronized更灵活的锁机制,支持公平锁和非公平锁,以及可中断和定时等待的锁获取方式。 4. wait(), notify()和notifyAll():Object类的方法,用于线程间通信,必须在同步...
4. **错误处理与进度显示**:在文件传输过程中,可能会遇到各种问题,如网络中断、文件不存在或权限不足等。因此,源码应包含适当的错误处理机制,以优雅地处理这些问题。同时,为了提高用户体验,通常会添加进度条...
"windows中断.zip"这个压缩包文件包含了有关Windows中断处理的详细信息,对于进行Windows编程的开发者来说尤其重要。 1. **中断的基本概念**: - 中断是计算机硬件向CPU发出的一种请求,用来通知CPU发生了某种事件...
- **中断响应**:AQS能够处理线程的中断请求,确保在等待过程中线程可以被中断。 ##### 性能目标 - **稳定性与响应性**:AQS的设计重点在于确保在高并发情况下,系统能够稳定运行,并且对线程的请求能够快速响应。 ...
11. `join()`方法使线程A等待线程B完成,`interrupt()`可以中断阻塞状态,`isAlive()`检查线程是否正在执行,而`currentThread()`获取当前线程引用,因此选项D错误。 12. 对象锁在同步块执行完或抛出异常时由持有它...
C++11关于thead的应用,利用std::condition std::mutex提供如何中断,停止和继续功能,
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。