java - TimerTask - 为什么我的代码表现得那样?

时间:2013-05-23 12:47:51

标签: java timertask timer-jobs

我写了以下代码:

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

0 个答案:

没有答案