gpt4 book ai didi

java - 如何停止 ScheduledExecutorService 的工作?

转载 作者:行者123 更新时间:2023-12-02 11:19:17 25 4
gpt4 key购买 nike

在我的项目中,我有一个图表,根据我们是否单击“开始”或“停止”按钮,它可以变成动画。我可以让它开始,但我不知道如何阻止它。 shutdownNow() 方法没有给出任何结果。我怎样才能做到这一点?这是我的代码

public class Animation extends JPanel{
// initializations
ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);

Animation(String s){
// initialization of chart and adding XYSeries
this.add(chartPanel);
}

public void go() {
scheduler.scheduleAtFixedRate( (new Runnable() {

@Override
public void run() {
double first;
l = dataset.getSeries();

while(true) {
first = (double)l.get(0).getY(0);
for (int k = 0; k < l.get(0).getItemCount(); k++) {
if (k + 1 < l.get(0).getItemCount()) l.get(0).updateByIndex(k, l.get(0).getY(k+1));
else l.get(0).updateByIndex(k, first);
}
}
}

}), 0, 5, MILLISECONDS);

}

public void stop() {
scheduler.shutdownNow();
}

}

最佳答案

根据 java 文档,shutdownNow() 的工作原理如下。

There are no guarantees beyond best-effort attempts to stop processing actively executing tasks. For example, typical implementations will cancel via {@link Thread#interrupt}, so any a task that fails to respond to interrupts may never terminate.

因此,它将设置中断标志为true,因此您需要正确管理InterruptedException和/或显式检查Thread.currentThread().isInterrupted()。您可以使用下面的代码来停止当前正在运行的输入线程。

while (!Thread.currentThread().isInterrupted()) {
// your code here
}

关于java - 如何停止 ScheduledExecutorService 的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50048802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com