我写了以下代码:
private void Button_StartMouseClicked(java.awt.event.MouseEvent evt) {
java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
Find(word_from_textfield);
}
},
10
);
}
public void Find (String word) {
String[] array_files = new String[100];
int j;
for (j=0; j<array_files.length; j++) {
if (array_files[j] != null) {
if (array_files[j].contains("1")) {
function1 ( array_files[j], word ); // function1() prints some line on a textpane
}
else if ( array_files[j].contains("2") )
{
function2 ( array_files[j], word); // function2() prints some line on a textpane
}
else if ( array_files[j].contains("3") )
{
function3 ( array_CARTELLE[j], word ); // function3() prints some line on a textpane
}
}
}
}
我已将 Find() 函数放在TimerTask()
. 正如您所看到的,该函数调用了其他函数,这些函数在文本窗格上附加了一些行,一些检查。
结果是我的程序一一打印这些行,每一行在几毫秒后打印在前一行之后,那是因为我使用了Timer().schedule()
.
我尝试调用 Find() 方法而不使用Timer
. 结果是我的程序运行了,当它调用我的 Find() 方法时,它卡住了一会儿,然后同时打印了所有行。
我想了解为什么会这样。我的意思是,当我选择使用时,Timer().schedule()
我预计我的 Find() 方法会在 10 毫秒后运行,但在那之后它会同时打印我的所有行而不会冻结我的程序,但我没想到会看到这些行在不同的时刻一张一张地打印出来。
所以我想知道:
为什么我有这样的行为使用
Timer().schedule()
.以及为什么我的程序在运行 Find() 方法时卡住了一会儿。