一、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的函数,不会发生后者的情况
具体例子详见:我的收藏中多线程--》中断机制
分享到:
相关推荐
C#多线程窗体控件安全访问.txt C#多线程使用TextBox控件 .txt C#多线程注意点.txt Control的Invoke和BeginInvoke.txt Invoke和BeginInvoke的真正含义.txt NET异步调用模式.txt TreeView更新线程.txt url.txt VB.NET...
基于C++实现多线程连接池MySQL源码+项目说明+详细代码注释.zip C++ 调用 MYSQL API 连接池 ## environment: * VS2022 * MySQL8.0.27 ## 高并发下频繁处理瓶颈 * 建立通信:`TCP三次握手` * 数据库服务器的`连接认证...
利用CreateMutex()可以防止程序多个实例运行,如下例: Program ABC; Uses Forms,Windows,…; {$R *.res} Var hMutex:Hwnd; Begin Application.Initialize; hMutex:=CreateMutex(nil,False,Pchar...
内容索引:VB源码,系统相关,多线程 一个VB多线程实例,测试结束时候要注意,一定要先击"结束"再关闭程序,否则电脑很可能会崩溃. 程序里的一些说明: 关于为何使用gdi 函数输出文本,这是一个很重要的内容; 程序...
遇到了很多问题,其中一个问题是:点击退出按钮,应用程序关闭但是***.exe依然存在内存,所以下面谈谈.NET Windows应用程序退出的方法。 .NET退出程序或者线程一般有以下五个方法: 1.Form.Close 方法 2....
生产者-消费者模型:需要设计一个多线程程序,其中有多个生产者和多个消费者,生产者不断产生数据放入共享队列,消费者从队列中取出数据进行消费。 线程池类:需要设计一个线程池类,能够动态管理线程数量,支持可...
│ │ ├─实例63 如何编写多线程程序 │ │ ├─实例64 如何编写DLL服务端程序 │ │ ├─实例65 如何编写DLL客户端程序 │ │ ├─实例66 如何编写用户控件程序 │ │ └─实例67 如何给程序打包 │ ├─第4章 ...
最近开发一些东西,线程数非常之多,当用户输入Ctrl+C的情形下,默认的信号处理会把程序退出,这时有可能会有很多线程的资源没有得到很好的释放,造成了内存泄露等等诸如此类的问题,本文就是围绕着这么一个使用场景...
本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但...
cc实例 190 多线程cc实例 6.8 鼠标.c键盘相关设置 cc实例191 动画鼠标 cc实例192 限制鼠标移动区域 第7章 注册表 7.1 显示与隐藏 cc 实例193 隐藏.c显示“我的电脑”.c“回收站”.c“网上邻居” cc...
cc实例190 多线程cc实例 6.8 鼠标.c键盘相关设置 cc实例191 动画鼠标 cc实例192 限制鼠标移动区域 第7章 注册表 7.1 显示与隐藏 cc 实例193 隐藏.c显示“我的电脑”.c“回收站”.c...
cc实例190 多线程cc实例 6.8 鼠标.c键盘相关设置 cc实例191 动画鼠标 cc实例192 限制鼠标移动区域 第7章 注册表 7.1 显示与隐藏 cc 实例193 隐藏.c显示“我的电脑”.c“回收站”.c...
介绍 在使用多线程模型进行编程时,经常遇到的问题之一是,当我们关闭前台的UI线程时,后台的辅助线程仍然处于活动状态,从而导致整个应用程序无法正常退出。这时我们需要一种较安全的方式来结束后台线程的运行,...
最终用户不再需要担心哪些应用程序是活动的,也不必在运行新程序前先关闭原有的一些程序。Android针对低能耗、低内存的设备进行了优化,这种根本性的优化是之前的平台从未尝试过的。 高质量的图形和声音。将类似...
·新版本对系统架构重新优化,极大程度减少假死和崩溃现象; ·深层次优化浏览器启动...·内建高速下载工具,支持多线程下载和断点续传。 ·多样的皮肤选择、更自由的换肤方式,让你每天浏览网页的心情更加多姿多彩!
全面优化系统架构,浏览速度更快、更稳定 new ·新版本对系统架构重新优化,极大...·内建高速下载工具,支持多线程下载和断点续传。 ·多样的皮肤选择、更自由的换肤方式,让你每天浏览网页的心情更加多姿多彩!
实例190 多线程 实例 6.8 鼠标、键盘相关设置 实例191 动画鼠标 实例192 限制鼠标移动区域 第7章 注册表 7.1 显示与隐藏 实例193 隐藏、显示“我的电脑”、“回收站”、“网上邻居” 实例194 隐藏、显示...
本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但...
实例190 多线程 实例 6.8 鼠标、键盘相关设置 实例191 动画鼠标 实例192 限制鼠标移动区域 第7章 注册表 7.1 显示与隐藏 实例193 隐藏、显示“我的电脑”、“回收站”、“网上邻居” 实例194 隐藏、显示...
全面优化系统架构,浏览速度 ·新版本对系统架构重新优化,极大程度减少假死和崩溃...·内建高速下载工具,支持多线程下载和断点续传。 ·多样的皮肤选择、更自由的换肤方式,让你每天浏览网页的心情更加多姿多彩!