黑莓中的invokeLater内部的线程

时间:2012-10-18 16:26:39

标签: java multithreading blackberry

我在Blackberry的invokeLater方法中有一个线程,如:

startButton.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            Thread thread = new Thread(){
                public void run() {
                    uploadFile();
                }
            };
            thread.start();
        }
    });
}

我有一个帖子,因为我想在后台运行该功能,并希望能够在完成其工作时做其他事情。我想知道的是,这是一个好方法。在这种情况下我真的需要invokeLater吗?

1 个答案:

答案 0 :(得分:2)

简答:不。

答案很长:

InvokeLater将Runnable放在事件队列中,以便及时,当事件循环看到Runnable时,它将在事件线程上执行它。由于您在FieldChangeListener的fieldChanged方法中调用invokeLater,因此您将从事件线程中调用它。除非你想要做的是将你的线程的开始延迟到某个未知的时间,否则你不需要使用invokeLater。