当前位置: 首页 > 面试题库 >

如何在Java中启动/停止/重新启动线程?

尉迟雅昶
2023-03-14
问题内容

我很难找到一种方法来启动,停止和重新启动Java中的线程。

具体来说,我在file中有一个类Task(当前实现RunnableTask.java。我的主应用程序需要能够在线程上启动此任务,在需要时停止(杀死)该线程,有时还可以杀死并重新启动该线程…

我的第一次尝试是与,ExecutorService但我似乎找不到办法重新启动任务。当我使用.shutdownnow()任何将来的呼叫.execute()失败时,因为ExecutorService是“关机” …

那么,我该怎么做呢?


问题答案:

一旦线程停止,你将无法重新启动它。但是,没有什么可以阻止你创建和启动新线程。

选项1:创建一个新线程,而不是尝试重新启动。

选项2:与其让线程停止,不如让它等待,然后当它收到通知时,可以允许它再次工作。这样,线程永远不会停止,并且永远不需要重新启动。

根据评论进行编辑:

要“杀死”线程,你可以执行以下操作。

yourThread.setIsTerminating(true); // tell the thread to stop
yourThread.join(); // wait for the thread to stop


 类似资料:
  • Triathlon程序执行一个长时间运行的任务,如果该任务已完全执行,则有可能重新启动该任务。我想添加停止执行以重置UI的可能性。为了达到这个目的,我增加了一个新的按钮,停止。代码如下: 如果任务已经完成,程序很好地重新启动,但是如果我在停止它之后调用start,程序就会崩溃。我该纠正什么?

  • 对不起,老问题。我已经澄清了。我如何用我可怜的线程类开始停止线程? 编辑:它在循环中,我想在代码开头再次重新启动它。我如何启动停止重新启动? 我的班级: 在主代码中,我希望:

  • 问题内容: 我已经从http://jenkins-ci.org/content/thank-you-downloading-windows- installer 下载了“ jenkins-1.501.zip” 。 我已经解压缩了zip文件,并在Windows 7上成功安装了Jenkins。詹金斯的表现不错。我想从控制台停止Jenkins服务。我怎样才能做到这一点?通过控制台/命令行启动和重新启动的

  • 问题内容: 我试图编写一个文件监视器,它将检查文件是否添加了新行,该监视器实际上是一个线程,它将始终由randomaccessfile读取该行。 这是监视器的核心代码: 这是一些帮助类: 这是调用监视器的示例: 现在,我的问题是,如果我仅调用以下代码,代码就可以很好地工作: 这将监视文件的行追加,并通知侦听器。 但是,当我致电: 这意味着我想监视另一个文件而不是之前。 因此,在Monitor中,我

  • 问题 你要为需要并发执行的代码创建/销毁线程 解决方案 threading 库可以在单独的线程中执行任何的在 Python 中可以调用的对象。你可以创建一个 Thread 对象并将你要执行的对象以 target 参数的形式提供给该对象。 下面是一个简单的例子: # Code to execute in an independent thread import time def countdown(