Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Blackberry中调用器内的线程_Java_Multithreading_Blackberry - Fatal编程技术网

Java Blackberry中调用器内的线程

Java Blackberry中调用器内的线程,java,multithreading,blackberry,Java,Multithreading,Blackberry,我在Blackberry中的invokeLater方法中有一个线程,如: startButton.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field arg0, int arg1) { UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() {

我在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将Runnable放在事件队列上,以便在事件循环看到Runnable时,它将在事件线程上执行它。由于您是在FieldChangeListener的fieldChanged方法中调用invokeLater,因此您是从事件线程调用它。除非您想做的是将线程的开始延迟到稍后未知的时间,否则不需要使用invokeLater