本篇文章为你整理了终止线程的运行(终止线程的运行方式)的详细内容,包含有终止线程的运行命令 终止线程的运行方式 终止线程运行的方法 终止线程运行的方法最佳方法 终止线程的运行,希望能帮助你了解 终止线程的运行。
终止线程的执行
目录终止线程的执行一、强制终止线程的执行二、合理终止线程的执行
一、强制终止线程的执行
强制终止用的是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 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 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停止了程序,线程正常结束!
以上就是终止线程的运行(终止线程的运行方式)的详细内容,想要了解更多 终止线程的运行的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。