【发布时间】:2013-07-14 17:01:46
【问题描述】:
我创建了一个应用程序,它在目录中包含的每个文件中搜索一个单词。
我想实现一种停止搜索的方法。
我创建了一个方法,该方法根据在目录中找到的每个文件类型调用其他不同的方法。
我曾在一堂课上工作,我创建了一个JButton 请求停止搜索:
private void jButtonActionPerformed(java.awt.event.ActionEvent evt)
{
System.out.println("Requesting stop");
}
我需要一种方法来停止搜索目录的方法,假设我的方法是search(directory);。
我试过这样search(directory);:
private Thread a;
a = new Thread(new Runnable() {
@Override
public void run() {
search(directory);
}
}
);
然后在搜索时单击jButton 停止搜索:
private void jButtonActionPerformed(java.awt.event.ActionEvent evt)
{
System.out.println("Requesting stop");
a.stop();
}
它有效,但我已经阅读了很多关于此的帖子,这不是停止线程的好方法。 那么有什么选择吗?你能举个例子吗?
我也试过这个:
java.util.TimerTask timerTask;
ScheduledThreadPoolExecutor scheduledThread = new ScheduledThreadPoolExecutor(10);
timerTask = new java.util.TimerTask() {
@Override
public void run() {
search(directory);
}
};
scheduledThread.schedule(timerTask, 3, TimeUnit.MILLISECONDS);
然后在jButtonActionPerformed:
private void jButtonActionPerformed(java.awt.event.ActionEvent evt)
{
System.out.println("Requesting stop");
scheduledThread.shutdownNow();
}
它也可以,但在这种情况下,当我尝试这样做时,我无法开始新的搜索。我需要关闭并重新打开应用程序。
【问题讨论】:
-
标题中不需要添加major标签。