【发布时间】:2018-04-26 17:24:51
【问题描述】:
在我的项目中,我有一个图表,它可以根据我们单击“开始”或“停止”按钮而变成动画。我可以让它开始,但我不知道如何阻止它。方法 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();
}
}
【问题讨论】:
-
shutdownNow调用Thread#interrupt所以尝试使用while (!Thread.currentThread().isInterrupted())而不是while(true)。
标签: java swing animation executorservice scheduledexecutorservice