0

我写了以下代码:

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() 方法时卡住了一会儿。

4

0 回答 0