我写了以下代码:
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()
中。
正如您所看到的,该函数调用其他函数,这些函数会在textpane上附加一些行进行一些检查。
结果是我的程序逐个打印这些行,每行在几毫秒之后打印出来,这是因为我使用了Timer().schedule()
。
我试图在不使用Timer
的情况下调用Find()方法。结果是我的程序运行了,当它调用我的Find()方法时,它停留片刻,然后它同时打印所有行。
我想明白为什么会这样。我的意思是,当我选择使用Timer().schedule()
时,我预计我的Find()方法会在10毫秒后运行但在那之后它会同时打印我的所有行而不冻结我的程序,但我没有期望在不同时刻逐一打印出这些线条。
所以我想知道:
为什么我使用Timer().schedule()
有这样的行为。
为什么我的程序在运行Find()时卡住了一会儿 方法