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

如何为Executors.newScheduledThreadPool(5)设置RemoveOnCancelPolicy

陆俊捷
2023-03-14
问题内容

我有这个:

ScheduledExecutorService scheduledThreadPool = Executors
        .newScheduledThreadPool(5);

然后,我开始执行如下任务:

scheduledThreadPool.scheduleAtFixedRate(runnable, 0, seconds, TimeUnit.SECONDS);

我这样保存对未来的引用:

ScheduledFuture<?> scheduledFuture = scheduledThreadPool.scheduleAtFixedRate(runnable, 0, seconds, TimeUnit.SECONDS);

我希望能够取消 和删除 未来

scheduledFuture.cancel(true);

但是,此SO答案指出,取消操作不会将其删除,而添加新任务将以许多无法使用GC的任务结束。

http://codingdict.com/questions/155838

他们提到了有关的内容setRemoveOnCancelPolicy,但是这种scheduledThreadPool方法没有。我该怎么办?


问题答案:

此方法在ScheduledThreadPoolExecutor中声明。

/**
 * Sets the policy on whether cancelled tasks should be immediately
 * removed from the work queue at time of cancellation.  This value is
 * by default {@code false}.
 *
 * @param value if {@code true}, remove on cancellation, else don't
 * @see #getRemoveOnCancelPolicy
 * @since 1.7
 */
public void setRemoveOnCancelPolicy(boolean value) {
    removeOnCancel = value;
}

Executors类通过newScheduledThreadPool和类似方法返回此执行程序。

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
    return new ScheduledThreadPoolExecutor(corePoolSize);
}

简而言之,您可以强制转换执行程序服务引用以调用该方法

ScheduledThreadPoolExecutor ex = (ScheduledThreadPoolExecutor) Executors.newScheduledThreadPool(5);
ex.setRemoveOnCancelPolicy(true);

new ScheduledThreadPoolExecutor自己创建。

ScheduledThreadPoolExecutor ex = new ScheduledThreadPoolExecutor(5);
ex.setRemoveOnCancelPolicy(true);


 类似资料:
  • 我正在尝试使用TypeScript为类设置。但这并不奏效。如果你有什么想法,请与我分享。

  • 我试图弄清楚如何处理HttpHeaders上的头,以便通过HttpClient将它们用于http请求。 它只能这样工作: 有没有添加标题的特殊方法?还是虫子?

  • 试验设置 本章将分步骤详细描述进行一次A/B测试所需设置的几个关键步骤。 首先需要明确您所需的试验方案,例如: 提出问题:为什么我的产品转化率不够高 建立假设:让“下一步”按钮更明显一些,也许转化率会更高 准备方案:不同的按钮设计图,按钮的点击次数和页面流量统计,需要多少流量来进行这个试验 验证这个假设:构建了一个“下一步”按钮更加明显的版本作为版本B,与原始版本A同时上线,展示给具有相同属性的两

  • 问题内容: 我正在尝试在WebClient上设置超时,这是当前代码: 我需要添加超时和池策略,我在想这样的事情: 但是我不知道如何在我的webclient中设置httpClient 问题答案: WebFlux 不使用Apache Commons HTTP Client。虽然你可能可以通过custom实现一个解决方案。现有基于Netty。因此,考虑使用Netty选项来配置客户端,例如: 要么 更新

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我的.fxml文件中有这个树视图: 在我的.css文件中,我想为TreeItems设置一个图像: 如何设置特定树项的图像?