龙空技术网

java程序员必知技巧-如何优雅地结束一个线程?

三僡然 33

前言:

而今大家对“java怎么中断线程”大概比较重视,看官们都需要剖析一些“java怎么中断线程”的相关资讯。那么小编在网上收集了一些对于“java怎么中断线程””的相关文章,希望我们能喜欢,看官们一起来学习一下吧!

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

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

使用标志中断线程。1.使用标志

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

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

2.中断线程

以上代码看起来不错,但在采取上述方法之前需要考虑一些要点

如果我们有很多线程,它将变得更加复杂,我们需要确保使用join()方法完成这些线程。我们真的需要定义一个布尔标志,因为Java已经使用中断标志提供了这个功能吗?

在这个代码块中有几件非常重要的事情

我们不会吞下异常,而是将其传递给系统,以确保系统根据此异常采取纠正措施

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

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

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

标签: #java怎么中断线程 #java中thread结束 #java thread结束