java结束一个线程_如何优雅地结束一个线程?

首先谢谢邀请

在本文中,我们将讨论结束Java线程的简洁方法,这是必要的,因为Java已经弃用了Thread.stop()方法。

Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit由于一些潜在的线程安全问题, Oracle已弃用 。很少有公认的和广为接受的方法来实现这一点,在本文中,我们将讨论2 个用Java结束线程的方法。使用标志

中断线程。

1.使用标志

一种简单的方法是使用线程来指示线程是否正在运行,并使用此标志根据您的要求采取纠正措施,下面是一个示例代码,概述了如何使用标志来杀死Java线程。

6d9c228660042793d458be1cbe6e228a.png

在上面的例子中。我们可以通过将运行变量设置为false来控制执行。在我们的示例中,我们使用AtomicBoolean了并发,如果您不想使用它(不推荐),您需要确保Boolean您在代码应该是易变的。可以使用 volatile代替他。

2.中断线程

dd4755a555eba577665127d46883c167.png

以上代码看起来不错,但在采取上述方法之前需要考虑一些要点如果我们有很多线程,它将变得更加复杂,我们需要确保使用join()方法完成这些线程。

我们真的需要定义一个布尔标志,因为Java已经使用中断标志提供了这个功能吗?

在这个代码块中有几件非常重要的事情我们不会吞下异常,而是将其传递给系统,以确保系统根据此异常采取纠正措施

在上面的例子中,我们捕获InterruptedException并立即用于立即 Thread.currentThread().interrupt() 中断我们的线程。这是必需的,因为一旦抛出异常就中断了中断标志,并且如果我们的代码在嵌套循环中运行,它可能会导致一些问题。

总而言之,如果你仍然想要使用标志方法,那么Thread.interrupt()结束java线程的首选/推荐方法是你可能必须等待所有阻塞操作完成才能使用基于标志的逻辑。

文版权归是三僡然所有,转载请标明出处。欢迎转载,欢迎评论,欢迎分享。如果你有文章想分享可以联系我。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值