2010-06-24 97 views
0

我在寫一個小程序,其中JavaFx充當查看器和控制器,並讓Java執行其他艱苦的工作。我可以從Javafx啓動多個線程,但是我無法阻止它們。如果我嘗試使用.stop(),線程仍在運行。JavaFX多線程

這裏就是其中之一:

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(); 

} 

回答

1

使用JavaTaskBase來實現你的Java線程。有一種停止方法來殺死線程。這是你如何使用它的example

+0

我已經這樣做了。正如我所說,我可以開始線程,他們工作正常。但是調用.stop()不會執行任何操作。 – 2010-07-03 22:14:05

1

我對JFXtras XWorker組件的線程有更好的運氣。見http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/org.jfxtras.async/org.jfxtras.async.XWorker.html

但是,一般來說,爲了讓線程響應取消/停止請求,您必須在「執行某些操作」部分檢查代碼中已取消或已停止的標誌。例如,如果你的線程處於無限循環狀態,或者你只是有一系列長時間運行的進程,你可以檢查它們之間的取消/停止,這會起作用。或者,如果您的代碼調用某個阻塞方法(如套接字或阻塞隊列),那麼當線程被取消時,其中大多數將引發InterruptedException。