线程的退出 java_Java线程安全退出的方法

Java退出while(true)来保持循环的线程,之前用过stop();

最近发现该方法已经不推荐使用,查阅相关资料,得出一种较为安全的退出方式:

步骤如下:

在线程类中加入volatile修饰的标记变量

private volatile boolean isStop = false;

调用interrupt()方法,并将该标记变量设为需求值

public void quit() {

//若希望线程退出,则置为true

isStop = true;

interrupt();

}

调用该方法会调用线程类的interrupt()方法,这个方法会产生一个InterruptedException,我们就可以在线程的run()方法中捕获到这个异常,在catch块中进行业务处理,非常适合使用while(true)来保持循环的线程.

捕获异常,判断是否需要结束线程

直接po代码

@Override

public void run() {

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);

Request> request;

while (true) {

try {

// 执行业务逻辑

} catch (InterruptedException e) {

// 在此处判断是否跳出循环,若跳出循环,线程自动执行完成

if (isStop) {

return;

}

// 非我们发出的中断申请,线程继续执行

continue;

}

}

}

把这个try-cache块放在while循环的底部,可以防止非人为异常发生时导致的业务执行不完整.

调用方式:

//也可以带参执行,根据参数判断shi'fou

thread.quit();

以上,可以看出这种退出方式可以使线程通过正常的生命周期结束,因此推荐使用这种方式来结束线程.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值