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