java 终止方法_Java中终止线程的三种方法
Java中终止线程的三种方法
Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的!
1. 线程正常执行完毕,正常结束
也就是让run方法执行完毕,该线程就会正常结束。
但有时候线程是永远无法结束的,比如while(true)。
2. 监视某些条件,结束线程的不间断运行
需要while()循环在某以特定条件下退出,最直接的办法就是设一个boolean标志,并通过设置这个标志来控制循环是否退出。
public class ThreadFlag extends Thread {
public volatile boolean exit = false;
public void run() {
while (!exit) {
System.out.println("running!");
}
}
public static void main(String[] args) throws Exception {
ThreadFlag thread = new ThreadFlag();
thread.start();
sleep(1147); // 主线程延迟5秒
thread.exit = true; // 终止线程thread
thread.join();
System.out.println("线程退出!");
}
}
3. 使用interrupt方法终止线程
如果线程是阻塞的,则不能使用方法2来终止线程。
public class ThreadInterrupt extends Thread {
public void run() {
try {
sleep(50000); // 延迟50秒
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) throws Exception {
Thread thread = new ThreadInterrupt();
thread.start();
System.out.println("在50秒之内按任意键中断线程!");
System.in.read();
thread.interrupt();
thread.join();
System.out.println("线程已经退出!");
}
}
java 终止方法_Java中终止线程的三种方法相关推荐
- java 不知道类名_Java 中获取类名的三种方法,你知道几种?
之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里 ...
- java 取名字_Java 中获取类名的三种方法,你知道几种?
之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName()返回的是虚拟机里面 ...
- java里break的使用方法_Java中break的第三种用法说明
在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...
- java中三种方法_Java文件I/O的三种方法
Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...
- java当前时间_java 获取当前时间的三种方法
总结java里面关于获取当前时间的一些方法 System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响, ...
- java json的使用方法_JAVA编写JSON常用的三种方法
JAVA编写JSON常用的三种方法 Szx • 2019 年 11 月 15 日 1.jsonlib需要引入的包也多,代码也相对多一些. 2.Gson:谷歌的 3.FastJson:阿里巴巴的,这几个 ...
- JAVA中创建线程的三种方法及比较
JAVA中创建线程的方式有三种,各有优缺点,具体如下: 目录 一.继承Thread类来创建线程 二.实现Runnable接口来创建线程 三.通过Callable和Future来创建线程 四.三种方式创 ...
- java多线程同步的四种方法_java中实现多线程的两种方法
java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...
- java 复制文件_Java中复制文件的4种方法
Java拷贝文件是一种非常常见的操作.但是java.io.File类没有任何快捷方法可以将文件从源复制到目标文件.在这里,我们将了解学习可以在java中复制文件的四种不同方法. 方法一:使用Strea ...
- java 获取类名_Java中获取类名的3种方法!
获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...
最新文章
- php 缺少参数,php - 如何验证JSON响应中是否缺少参数-Laravel 6 - 堆栈内存溢出
- 解决XManager连接到HP-UX时出现乱码的问题
- 详细分析Memcached缓存与Mongodb数据库的优点与作用
- [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
- 扩展AD 用户上传头像
- IOS APP Store下载链接
- 技术总监之路——App项目开发流程
- 虚拟机中linux连网,虚拟机Linux上网的方法
- Android 手机上利用adb shell模拟手机相关操作
- 关于动态抽样(Dynamic Sampling)
- tensorflow语义分割计算mIoU时忽略某一类别
- 深入学习三个月向大厂发起冲击
- 【Qt】Q_INIT_RESOURCE的使用
- SQLServer As
- bread是可数还是不可数_学了20年英语才明白:bread为什么是不可数名词?
- 王道机试指南NO.8最大公约数
- 海思35XX系列芯片型号规律
- JAVAWEB开发之工作流详解(一)——Activiti的环境搭建、插件安装、核心API
- 组装电脑配置推荐2022
- 关于图像变换的总结(仿射变换,刚体变换等)