java - 在 UI 中执行按钮操作时停止 ScheduledExecutorService

标签 java

我创建了一个scheduledExecutorService,如下所示

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
  @Override
  public void run() {
    // do stuff
  }
}, 0, 5, TimeUnit.SECONDS);

我想在 UIJSP 中单击停止按钮时停止服务。非常感谢对此的任何帮助

最佳答案

看一下执行器的 shutdownNow() 方法。

exec.shutdownNow();
exec.awaitTermination();

几乎可以满足您的需求。它不会立即停止线程(因为它不安全)。相反,它设置 isInterrupted() 标志,通知正在运行的线程应该停止。因此,您的 Runnable 必须不时检查该标志。当它发现标志已设置时,它应该从 run() 方法返回。

exec.awaitTermination(); 正在等待,直到线程停止。在该行之后,您可以确定线程已停止执行。

关于java - 在 UI 中执行按钮操作时停止 ScheduledExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284612/

相关文章:

java - 初始化与方法一起使用的对象数组

Java 字符串包含方法和枚举

java - 如何让 JTextPane 显示省略号以表示文本溢出?

java - 接口(interface)是否被视为实现它的类的父级?

java - 简单的 Jackson XML 反序列化到 Java 不起作用

java - 如何强制 jTable 不可编辑?

java - 单击 JButton 时动态添加组件到 JPanel

java - 将 JTextArea 字体类型更改为僧伽罗语

java - 如何在Spring中创建一个创建单例的工厂

Java 扫描器 nextLong