一、java中断机制
当外部线程对某线程调用了thread.interrupt()方法后,java语言的处理机制如下:
如果该线程处在可中断状态下,(调用了xx.wait(),或者Selector.select(),Thread.sleep()等特定会发生阻塞的api),那么该线程会立即被唤醒,同时会受到一个InterruptedException,同时,如果是阻塞在io上,对应的资源会被关闭。如果该线程接下来不执行“Thread.interrupted()方法(不是interrupt),那么该线程处理任何io资源的时候,都会导致这些资源关闭。当然,解决的办法就是调用一下interrupted(),不过这里需要程序员自行根据代码的逻辑来设定,根据自己的需求确认是否可以直接忽略该中断,还是应该马上退出。
如果该线程处在不可中断状态下,就是没有调用上述api,那么java只是设置一下该线程的interrupt状态,其他事情都不会发生,如果该线程之后会调用行数阻塞API,那到时候线程会马会上跳出,并抛出InterruptedException,接下来的事情就跟第一种状况一致了。如果不会调用阻塞API,那么这个线程就会一直执行下去。除非你就是要实现这样的线程,一般高性能的代码中肯定会有wait(),yield()之类出让cpu的函数,不会发生后者的情况
具体例子详见:我的收藏中多线程--》中断机制
分享到:
相关推荐
在实际编程实践中,多线程程序设计面临着诸多挑战,如死锁问题、资源竞争问题、线程安全问题等。死锁是指两个或多个线程无限期地等待对方释放资源,导致程序无法继续执行。资源竞争是指多个线程同时访问同一资源时,...
《Win32多线程程序设计》是一本深入探讨Windows操作系统环境下如何开发多线程应用程序的专业书籍。在当今计算机系统中,多线程已经成为提升软件性能、实现并发处理的关键技术。Win32 API提供了丰富的接口支持多线程...
本项目“C# Winform动态创建和关闭多线程源码 可运行”提供了一个完整的解决方案,适用于Visual Studio 2010,它演示了如何在Winform应用中灵活地创建和管理多个线程。 一、线程基础 线程是操作系统分配CPU时间的...
本实例"delphi多线程程序实例"是一个面向初学者的学习资源,旨在帮助开发者理解并掌握多线程编程的基本概念和实践。 首先,我们要明白多线程的意义。在单线程环境中,程序执行是顺序的,如果某个操作耗时较长,整个...
【标题】多线程下载程序源码 在计算机科学领域,多线程技术是一种常见的优化手段,尤其是在网络下载场景中,它可以显著提升下载速度。本文将深入探讨多线程下载程序Leo2005的源码及程序设计,旨在帮助读者理解如何...
在设计多线程程序时,程序员需要考虑线程安全(Thread Safety)和避免死锁(Deadlock)等问题,这些都对程序的稳定性和性能有着直接影响。 多线程的优势在于它能够优化CPU资源的使用,让程序在处理多任务时更为高效...
在这个场景中,"mfc多线程聊天程序"指的是使用MFC框架开发的、支持多线程功能的聊天应用程序。多线程在聊天程序中的应用可以提高程序的响应速度和并发处理能力,为用户提供更好的体验。 多线程技术在聊天程序中的...
理解这些状态有助于调试和优化多线程程序。例如,如果线程被阻塞,可能是因为它正在等待锁或其他资源。 6. **线程通信**: 当多个线程需要共享数据或协调执行顺序时,线程通信变得重要。Java提供了多种机制,如...
**多线程端口扫描程序**是计算机网络中一种常用的技术,用于探测目标主机开放的网络端口。这种程序能够快速地向指定IP地址发送连接请求,检查哪些端口是监听状态,即服务正在运行。在本文中,我们将深入探讨多线程在...
多线程允许程序同时执行多个任务,提高系统效率,但同时也引入了线程同步和资源管理的问题。这个实例源代码,"ThreadSafeExit",很可能提供了一种确保线程在完成工作后正确、安全地终止的方法。下面我们将深入探讨多...
《win32多线程程序设计源码_侯捷》是一个关于Windows平台上使用C++进行多线程编程的资源集合,由知名IT专家侯捷编著。这个资源可能包括了一系列的示例代码、讲解文档,旨在帮助开发者深入理解和实践win32 API中的多...
在实践中,Win32多线程程序设计需要考虑线程安全、性能优化、异常处理等多个方面,理解并熟练掌握这些知识点对于提升Windows平台的软件开发能力至关重要。通过深入研究附书光盘中的示例,开发者可以更直观地学习和...
在Windows操作系统环境中,Win32 API提供了一套丰富的接口用于创建和管理多线程程序。多线程编程是现代软件开发中的重要技术,它允许在一个进程中同时执行多个独立的执行流,从而提高程序的并发性和效率。本资料集...
本课题旨在设计一个Linux环境下,使用多线程技术统计两个文件字数的程序。程序的核心功能是创建两个子线程,每个线程负责一个文件的字数统计,统计完成后,线程将结果写入共享内存区域,由父线程读取并打印出来。...
而在多线程程序中,不同任务可以在不同的线程上并行运行。 要实现在VB6中创建线程,我们需要了解和使用以下API函数: 1. **CreateThread**:这是Windows API中的一个函数,用于创建新的线程。它的原型为: ```vb ...
请注意,使用多线程时需要注意线程安全问题,特别是当多个线程共享数据时,需要确保同步机制,防止竞态条件的发生。在PyQt5中,通常使用`QMutex`或`QSemaphore`等同步对象来解决这些问题。 总的来说,PyQt5的多线程...
6. **性能优化**:合理调度线程的执行顺序和资源分配,可以显著提升多线程程序的性能。例如,避免过多的线程同步,合理划分任务,减少锁的使用,以及利用线程优先级等。 7. **调试与测试**:多线程程序的调试相对...
在Windows操作系统中,多线程程序设计是一种编程技术,它允许程序同时执行多个任务或子任务,从而提高程序的效率和响应性。本篇将详细解释如何创建和管理Windows环境下的多线程。 1. 创建线程: 创建线程的核心在于...
在讨论MFC(Microsoft Foundation Classes,微软基础类库)多线程程序设计时,我们需要了解在MFC中创建和管理线程的基础知识以及相关的API和类。MFC是微软提供的一套C++类库,用于简化Windows应用程序的开发,其中...