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

在Java中停止线程

孙朝明
2023-03-14
问题内容

如果我有这样的Java代码:

public static void main(String[] args)
{
    for(int i = 0;i<100;i++)
    {
        Future<?> f = ThreadPoolManager.getInstance().schedule(new START(), 500);
        f.cancel(true);
    }
}
private class START implements Runnable
{
    @Override
    public void run()
    {
        System.out.println(1);
    }
}

并在调试中运行它,我可以看到所有这些线程(在取消之后)仍在运行,所以它们也占用了我的内存吗?如果是的话,我怎么能完全销毁那些线程?


问题答案:

cancel(true)调用interrupt()您的线程,仅此而已。因此,您需要在您的run()方法中正确处理它。对于您的简单情况,您的线程将完成其执行,并且它们的对象将由GC清除。



 类似资料:
  • 问题内容: 我已经用GUI制作了一个Java程序,并且想要一个停止按钮功能,其中当用户单击停止按钮时,必须停止该程序。 在我的程序中,主线程启动其他10个线程,我希望每当单击“停止”按钮时,所有10个线程都必须在主线程之前停止。 其次,我还希望每当停止这10个线程中的任何一个线程时,它都必须先关闭它打开的所有资源,然后再连接数据库等。 我已经实现了.......回答的代码。 现在有一个问题。 我的

  • 问题内容: 我正在编写一段连接到服务器的代码,使用该连接会生成一堆线程并执行一堆“工作”。 在某些情况下,连接失败,我需要停止所有操作并从头开始创建新对象。 我想在对象之后进行清理,但在线程上调用thread.stop,但是此方法似乎已被弃用。 推荐的替代方法是什么?是否应该为每个线程编写自己的清理和退出方法?将线程设置为null?或者是其他东西? 问题答案: 看这里 : 在HowToStopAT

  • 问题内容: 我正在尝试停止线程,但是我不能这样做: 因此,即使我调用方法“停止”,线程也不会停止。它一直活着。 如何中断/停止该线程? 更新 (@little方法) 中间件类: 但是,当我尝试停止线程时,它没有。 上面的代码有什么问题? 问题答案: 确实没有必要使用标志。相反,只需使用来查询线程的状态。另外,为什么还要将线程对象包装在另一个线程对象中?对我来说,这似乎完全没有必要。 这是你应该做的

  • 问题内容: 我正在使用从队列中连续读取的线程。 就像是: 停止此线程的最佳方法是什么? 我看到两个选择: 1-由于已弃用,因此我可以实现使用原子检查条件变量的方法。 2-将死亡事件对象或类似的对象发送到队列。当线程获取死亡事件时,它退出。 我更喜欢第一种方法,但是,我不知道何时调用该方法,因为可能有某种方法进入队列,并且停止信号可能首先到达(这是不希望的)。 有什么建议? 问题答案: 该(或因为它

  • 问题内容: 我有一个Java应用程序, 我不能编辑 启动一个具有此方法: 我想在某个时间点停止它。如果我使用它不起作用。如果我使用它,则可以使用,但是不建议使用此方法(因此不建议使用该方法,因为在新版本中可能会将其从JVM中删除)。 如何在Java中停止此类不间断线程? 问题答案: 您可以使用检查变量来实现中断方法。 首先,使用易失性检查变量作为: 接下来,将您的线程定义为依赖于此变量。 接下来定