当前位置: 首页 > 知识库问答 >
问题:

JavaThreadPoolExecitor-关闭特定线程?

华景同
2023-03-14

我正在编写我的系统编程课程作业(使用线程)。

我的活动类实现runnable,我还有另一个类,其中有一个执行器,它使用:ThreadPoolExecutor e=(ThreadPoolExecutor)执行器执行该runnable。newFixedThreadPool(编号)

我在线程池中同时运行了几个线程。我的问题如下:我可以选择知道一个线程何时完成了它的工作,关于它需要做什么,我如何关闭这个线程,以及——仅仅——这个线程,而不是整个执行器?


共有2个答案

裴嘉良
2023-03-14

如果我理解正确,您想要的是newCachedThreadPool而不是newFixedThreadPool

来自Java文档

创建一个线程池,该线程池根据需要创建新线程,但在以前构造的线程可用时将重用这些线程。这些池通常会提高执行许多短期异步任务的程序的性能。调用execute将重用以前构造的线程(如果可用)。如果没有可用的现有线程,将创建一个新线程并将其添加到池中。60秒未使用的线程将被终止并从缓存中删除。因此,闲置足够长时间的池不会消耗任何资源。请注意,可以使用ThreadPoolExecutor构造函数创建具有类似属性但不同细节(例如超时参数)的池。

白侯林
2023-03-14

ThreadPoolExecutor负责管理其线程,您无法访问它们,除非通过一些可能会破坏executor的丑陋黑客攻击。您应该使用API提供的配置选项,例如setKeepAliveTime或接受keepAliveTime的构造函数。将其设置为零,你就会自动获得想要的行为。

 类似资料:
  • 问题内容: 为了在JSHint中关闭特定行的掉毛规则,我们使用以下规则: 我一直在尝试找到与以上相同的内容。 问题答案: 您现在可以使用单行语法: 或者,如果您不想在与实际代码相同的行上添加注释,则可以禁用下一行:

  • 为了关闭JSHint中特定行的林分规则,我们使用以下规则: 我一直在尝试为Eslint找到与上述相同的产品。

  • 问题内容: 我有一个Python程序,当我使用退出应用程序时 ,脚本不会关闭。我的过程仍显示在运行的过程中。 为什么python线程不能关闭? 问题答案: 您需要将该线程设为守护程序线程。为此,请在调用线程的init之后添加以下行 当只有守护程序线程处于活动状态时,程序将退出,主线程当然是非守护程序的

  • 是否可以关闭整个文件的eslint规则?某事,如: (类似于eslint-disable-line。)我经常遇到这样的情况,在某个文件中,我在许多地方违反了特定的规则,这对该文件来说是可以的,但我不想为整个项目禁用该规则,也不想为该特定文件禁用其他规则。

  • 有没有可能关闭sonar(www.sonarsource.org)对特定代码块的测量,哪一块代码不想被测量? Findbugs输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,如果客户机不知道异常,我可能只想将消息传递回客户机,而不包括刚刚捕获的实际异常(例如,因为客户机没有包含该异常的JAR)。

  • 我从主线程调用了下面的代码,使用ExecutorService池并启动一个线程来处理找到的每个文件。我正在尝试了解当主线程被kill命令终止时ExecutorService的行为。生成的线程会发生什么?一旦完成工作,它们会立即被杀还是终止? 还有没有更好/更安全的方法来编写下面的代码段,特别是如果我在无限循环中运行这部分,例如等待文件被放到输入目录并分配线程来处理它们?在这种情况下,我应该创建一个