【发布时间】:2016-03-22 12:51:14
【问题描述】:
这段代码应该是搜索网页的html文件,将一些结果打印到一个窗口,休眠60秒然后再次重复搜索。这在 python 中工作得很好,但翻译成 java 给我带来了问题。当我尝试执行此代码时,它不再打印结果,而是无限期地休眠。如果没有 while 循环,事情似乎会按方面进行。
btnSearch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
running = true;
while (running) {
exportField.setText("Searching...");
try {
exportField.setText(crawler.fetchHtml(url););
} catch (Exception e) {
exportField.setText("invalid parameters.");
e.printStackTrace();
}
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
更奇怪的是,如果我尝试以下简单的事情:
exportField.setText("Searching...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
exportField.setText("Done Searching");
我希望输出是“正在搜索...”pause“完成搜索”,但事实并非如此。它只是输出“完成搜索”。
为了好玩而从事这个项目!任何帮助将不胜感激。
【问题讨论】:
标签: java multithreading while-loop sleep