JavaFX多线程

时间:2010-06-24 20:53:11

标签: multithreading javafx

我正在编写一个小程序,其中JavaFx充当查看器和控制器,让Java做其他艰苦的工作。我可以从Javafx开始多个线程但是,我无法阻止它们。如果我尝试使用.stop(),则线程仍在运行。

以下是其中之一:

public var sleepTask_connect;

function LogOutAction(): Void {
    sleepTask_connect.stop();
}

function LogInAction(): Void {

   var listener = FXListener_interface_connection {
                override function callback(errorCode, errorMessage): Void {
                    //do something
                    if(errorCode != 200){
                        setIcn(errorMessage);
                        }
                }
            }
    sleepTask_connect = FXListener_connection {
                listener: listener
            };
    sleepTask_connect.start();

}

2 个答案:

答案 0 :(得分:1)

使用JavaTaskBase实现Java线程。有一种停止方法来杀死线程。以下是您使用它的example

答案 1 :(得分:1)

我更幸运的是使用JFXtras XWorker组件进行线程处理。请参阅http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/org.jfxtras.async/org.jfxtras.async.XWorker.html

但是,一般情况下,为了让您的线程响应取消/停止请求,您必须在“执行某些操作”部分中检查代码中的已取消或已停止标记。例如,如果您的线程处于无限循环中,或者如果您只有一系列长时间运行的进程,则可以检查它们之间的取消/停止。或者,如果您的代码调用了一些阻塞方法(如套接字或阻塞队列),那么当线程被取消时,大多数会抛出InterruptedException。