当前位置:首页 » 编程语言 » javastop

javastop

发布时间: 2025-01-11 21:00:20

java中如何正确而优雅的终止运行中的线程

Java中终止线程的方式主要有三种:

1、使用stop()方法,已被弃用。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性,所以被废弃。So, forget it!

2、使用volatile标志位

看一个简单的例子:

首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行

{

//定义退出标志,true会一直执行,false会退出循环
//使用volatile目的是保证可见性,一处修改了标志,处处都要去主存读取新的值,而不是使用缓存
publicvolatilebooleanflag=true;

publicvoidrun(){
System.out.println("第"+Thread.currentThread().getName()+"个线程创建");

try{
Thread.sleep(1000L);
}catch(InterruptedExceptione){
e.printStackTrace();
}

//退出标志生效位置
while(flag){
}
System.out.println("第"+Thread.currentThread().getName()+"个线程终止");
}
}

然后,在main()方法中创建线程,在合适的时候,修改标志位,终止运行中的线程。

publicclassTreadTest{
publicstaticvoidmain(String[]arg)throwsInterruptedException{
MyRunnablerunnable=newMyRunnable();

//创建3个线程
for(inti=1;i<=3;i++){
Threadthread=newThread(runnable,i+"");
thread.start();
}
//线程休眠
Thread.sleep(2000L);
System.out.println("——————————————————————————");
//修改退出标志,使线程终止
runnable.flag=false;
}
}

最后,运行结果,如下:

第1个线程创建
第2个线程创建
第3个线程创建
--------------------------
第2个线程终止
第1个线程终止
第3个线程终止

3、使用interrupt()中断的方式,注意使用interrupt()方法中断正在运行中的线程只会修改中断状态位,可以通过isInterrupted()判断。如果使用interrupt()方法中断阻塞中的线程,那么就会抛出InterruptedException异常,可以通过catch捕获异常,然后进行处理后终止线程。有些情况,我们不能判断线程的状态,所以使用interrupt()方法时一定要慎重考虑。

㈡ java中终止线程的方法

在Java的多线程编程中,java.lang.Thread类型包含了一些列的方法start(),stop(),stop(Throwable)andsuspend(),destroy()andresume()。通过这些方法,我们可以对线程进行方便的操作,但是这些方法中,只有start()方法得到了保留。本文是海文国际小编搜索整理的关于JAVA中终止线程的方法,供参考复习,希望对大家有所帮助!



如果真的需要终止一个线程,可以使用以下几种方法:


1、让线程的run()方法执行完,线程自然结束。(这种方法最好)


2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,java课程培训机构建议将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)


热点内容
电脑的项目怎么连接远端服务器 发布:2025-01-11 23:45:25 浏览:852
sql语句between 发布:2025-01-11 23:45:14 浏览:327
王者安卓转换苹果系统会损失什么 发布:2025-01-11 23:45:13 浏览:737
安卓手机涨价怎么办 发布:2025-01-11 23:27:17 浏览:712
三消游戏服务器搭建 发布:2025-01-11 23:20:01 浏览:246
c语言的函数不可单独进行编译 发布:2025-01-11 23:12:33 浏览:17
怎么查信用卡查询密码 发布:2025-01-11 23:11:08 浏览:572
javaexcel源码 发布:2025-01-11 23:11:04 浏览:557
讨论会脚本 发布:2025-01-11 23:09:27 浏览:574
test服务器搭建 发布:2025-01-11 23:03:22 浏览:421