终止线程的运行
2023-03-31 10:59:25 时间
终止线程的执行
一、强制终止线程的执行
强制终止用的是stop()方法,因为这种方法会丢失数据,所以一般不采用这种方法。
原理是直接杀死线程,这样的话线程中没有保存的数据就会丢失
/*
在java中强制终止一个线程
*/
public class ThreaTest09 {
public static void main(String[] args) {
Thread t=new Thread(new Thread09());
t.setName("t");
t.start();
try {
Thread.sleep(1000*5);
} catch (InterruptedException e) {
e.printStackTrace();
}
//stop()强行终止,容易丢失数据,这种方式是直接杀死线程,线程没有保存的数据会丢失。不建议使用
t.stop();
}
}
//一秒打印一个数字
class Thread09 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"----> begin"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
输出:
t----> begin0
t----> begin1
t----> begin2
t----> begin3
t----> begin4
可以看出,我们在主线程当中的休眠5s并没有执行!
二、合理终止线程的执行
既然上面那种方法会有容易丢失数据的缺点,那么我们在线程的操作中怎么去合理终止线程的运行呢?
我们可以定义一个布尔值,用来控制线程的结束
代码:
public class ThreadTest10 {
public static void main(String[] args) {
Thread10 thread10 = new Thread10();
Thread t=new Thread(thread10);
t.setName("t");
t.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread10.run=false;
}
}
class Thread10 implements Runnable{
boolean run=true;
@Override
public void run() {
for (int i = 0; i < 10; i++) {
if (run){
System.out.println(Thread.currentThread().getName()+"----->"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
//终止当前线程
//return就是结束,如果还有未保存的可以在这里执行保存,然后再结束
//save....
return;
}
}
}
}
输出:
t----->0
t----->1
t----->2
t----->3
t----->4
可以看出在程序中正常执行,当主线程休眠5s之后就调开始执行,把true改为false停止了程序,线程正常结束!
相关文章
- 看大片 深入理解Spark的概念和编程方式
- 企业实施大数据的五大关键(更新版)
- 机器学习会成为2017年大数据​分析的瓦解者吗?
- TalkingData首席布道师鲍忠铁:我眼中的大数据产业2016年终总结
- 普通程序员,如何转为当前紧缺的大数据相关人才?
- 大数据除了Hadoop,还有Scrapy
- 基于Docker的京东大数据实时计算平台
- 时间准度对数据中心的重要性
- Hadoop创始人寄语2017:五种让开源项目成功的方法
- 设计爬虫Hawk背后的故事
- 摆地摊卖水果 利用数据分析卖出4.7亿 但这不是大数据
- 微软建立R工具家族,将大数据带入寻常百姓家
- 2017年,这两个大数据岗位一定会火!
- 深刻理解HDFS工作机制
- 高效数据中心网络管理五大技巧
- 政府大数据服务,跑马圈地正当时
- 大数据金融渐行渐进
- 大数据等最核心的关键技术:32个算法
- 数据分析如何入门及职业规划?
- 10个2017的预测:数据科学、机器学习和物联网