Java安全停止线程方法
2024-09-05 06:09:48
- 1. 早期Java提供java.lang.Thread类型包含了一些列的方法 start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。,Sun 公司的一篇文章 《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》
- 2.使用volatile变量来设置Thread的run的循环条件,保证变量同步性
- public class JavaTest extends Thread{
- private volatile boolean isRun = true;
- public static void main(String[] args) {
- JavaTest thread = new JavaTest();
- thread.start();
- thread.close();
- }
- @Override
- public void run() {
- while (isRun) {
- //dosomething
- }
- }
- public void close() {
- this.isRun = false;
- }
- }
- 3.使用interrupt()来中止非运行状态的线程,如wait()和sleep()状态的线程,此时可利用interrupted来终止线程
- public class JavaTest extends Thread{
- private volatile boolean isRun = true;
- public static void main(String[] args) {
- JavaTest thread = new JavaTest();
- thread.start();
- thread.close();
- if (thread != null) {
- thread.interrupt(); //外围调用关闭
- }
- }
- @Override
- public void run() {
- while (isRun) {
- //dosomething
- try {
- wait(); //同样适用于sleep等状态
- } catch (InterruptedException e) {
- //catch Exception
- }
- }
- }
- public void close() {
- this.isRun = false;
- }
- }
最新文章
- Python之路【第五篇】:面向对象编程
- C#4.0 特性
- PHPCMS-V9 获取一级栏目、二级栏目、三级栏目
- 主机与虚拟机通信:以主机VS2010连接虚拟机MySql为例
- 优之星S900平板电脑root方法
- 文件格式PDF
- MyEclipse的快捷使用(含关联源码和Doc的方式)
- ASP.NET MVC Razor视图(2)
- windows通过Composer安装yii2
- Mysql主从配置+读写分离(转)
- c++, class的大小
- 第一题 (Map)利用Map,完成下面的功能:
- nginx之fastcgi
- 用C写一个web服务器(二) I/O多路复用之epoll
- 快速排序(Quicksort)的Javascript实现
- MySQL ID排序乱了的解决办法
- 移动端click事件300ms延迟
- oracle自治事务(PRAGMA AUTONOMOUS_TRANSACTION)
- leetcode python 004
- PAT甲题题解-1091. Acute Stroke (30)-BFS
热门文章
- Linux Shell列出网络中所有的活跃主机
- Ubuntu 16.04 RabbitMq 安装与运行
- laravel 自带消息notification通知
- 部署 --- Nginx
- Ubuntu 18.04 更换阿里源
- 【ARM-Linux开发】Linux链接 -ln
- 理解clientX、clientY、offsetLeft、event.offsetTop、offsetWidth、offsetHeight、clientWidth、clientHeight、scrollTop、scrollHeight
- Mysql性能优化之---(一)
- jquery清除元素的点击事件
- Linux 工作管理 (job control)