2010-06-24 7 views
0

저는 JavaFx가 뷰어 및 제어 자 역할을하는 작은 programm을 작성하고 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 당신에게 자바 스레드를 구현하기 : 여기

그들 중 하나입니다. 스레드를 종료하는 중지 메소드가 있습니다. 사용 방법은 example입니다.

+0

나는 이렇게했습니다. 내가 말했듯이 나는 실을 시작할 수 있고 그들은 잘 작동한다. 그러나 .stop() 호출은 아무 것도하지 않습니다. –

1

스레딩을 위해 JFXtras XWorker 구성 요소를 사용하는 것이 더 좋습니다. http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/org.jfxtras.async/org.jfxtras.async.XWorker.html을 참조하십시오.

일반적으로 스레드가 취소/중지 요청에 응답하려면 "수행 할 작업"섹션에서 코드의 취소 또는 중지 플래그를 확인해야합니다. 스레드가 무한 루프에 있거나 예를 들어 일련의 장기 실행 프로세스가있는 경우이 프로세스가 취소/중지되었는지 확인할 수 있습니다. 또는 코드가 소켓 또는 블로킹 큐와 같은 일부 블로킹 메서드를 호출하는 경우 스레드가 취소되면 대부분의 스레드에서 InterruptedException을 throw합니다.