【问题标题】:JavaFX Multi ThreadingJavaFX 多线程
【发布时间】:2010-06-24 20:53:11
【问题描述】:

我正在编写一个小程序,其中 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();

}

【问题讨论】:

    标签: multithreading javafx


    【解决方案1】:

    使用JavaTaskBase 来实现您的Java 线程。有一个停止方法可以杀死线程。这是一个example 你如何使用它。

    【讨论】:

    • 我是这样做的。正如我所说,我可以启动线程并且它们工作正常。但是调用 .stop() 并没有做任何事情。
    【解决方案2】:

    我在使用 JFXtras XWorker 组件进行线程处理时获得了更好的运气。见http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/org.jfxtras.async/org.jfxtras.async.XWorker.html

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-18
      • 2016-01-08
      • 2013-04-08
      • 2015-10-26
      • 2020-10-29
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多