2017-01-10 3 views
0
private Task<Void> getTransferId = new Task<Void>() { 

    @Override 
    protected Void call() throws Exception { 
     Client client = ClientBuilder.newClient(); 
     WebTarget webTarget = client.target(Constants.BASE_URL); 
     WebTarget helloworldWebTarget = webTarget.path(Constants.TRANSFER_FILE); 
     System.out.println(" checking working.....status"); 
     Invocation.Builder invocationBuilder = helloworldWebTarget.request(MediaType.APPLICATION_JSON); 
     PostFileLog fileLog = new PostFileLog(); 
     fileLog.setSenderId(myUuid); 
     fileLog.setReceiverId(clickedPossitionUuid); 
     fileLog.setFileName(fileName); 
     fileLog.setFileType(fileTypeInt); 
     fileLog.setFileSize(fileSizeFinal); 
     fileLog.setStatus(Constants.STATUS_PENDING); 
     fileLog.setFileDesc(Constants.NO_CAPTION); 
     Response response = invocationBuilder.post(Entity.entity(fileLog, MediaType.APPLICATION_JSON)); 
     int status = response.getStatus(); 
     PostFileLog reponceLog = response.readEntity(PostFileLog.class); 
     transferId = reponceLog.getUuid(); 
     System.out.println(transferId + " fist sending TrasferId andstastus " + status); 

     return null; 
    } 
}; 

위의 코드를 실행하기 위해 .run(); 을 사용하고 있습니다. 한 번만 실행됩니다. 이 문제를 해결할 수있는 솔루션이 무엇인지 지속적으로 실행해야합니다.javafx에서 작업을 계속 실행 하시겠습니까?

+0

"을 중지하는 방법을 while 루프에 코드를 넣어 만드는; ''. 이 작업은 백그라운드 스레드에서 작업을 실행하지 않습니다. 현재 스레드 (FX 응용 프로그램 스레드, 호출 위치에 따라 다름)에서 실행됩니다. 스레드를'Thread'로 랩핑하고 스레드에서'start()'를 호출하거나 적절한'Executor'에 제출해야합니다. –

답변

-1

그냥) (나는 .RUN`사용하고 위의 코드를 실행하는 while 루프를

편집 코드 확인이

boolean isStop=false; 
private Task getTransferId = new Task() 
{ 

@Override 
protected Void call() throws Exception 

{ 
    while(!isStop){ 
    Client client = ClientBuilder.newClient(); 
    WebTarget webTarget = client.target(Constants.BASE_URL); 
    WebTarget helloworldWebTarget = webTarget.path(Constants.TRANSFER_FILE); 
    System.out.println(" checking working.....status"); 
    Invocation.Builder invocationBuilder = helloworldWebTarget.request(MediaType.APPLICATION_JSON); 
    PostFileLog fileLog = new PostFileLog(); 
    fileLog.setSenderId(myUuid); 
    fileLog.setReceiverId(clickedPossitionUuid); 
    fileLog.setFileName(fileName); 
    fileLog.setFileType(fileTypeInt); 
    fileLog.setFileSize(fileSizeFinal); 
    fileLog.setStatus(Constants.STATUS_PENDING); 
    fileLog.setFileDesc(Constants.NO_CAPTION); 
    Response response = invocationBuilder.post(Entity.entity(fileLog, MediaType.APPLICATION_JSON)); 
    int status = response.getStatus(); 
    PostFileLog reponceLog = response.readEntity(PostFileLog.class); 
    transferId = reponceLog.getUuid(); 
    System.out.println(transferId + " fist sending TrasferId andstastus " + status); 
} 
    return null; 
} 
}; 

public void StopTask(){//To stop the task 
isStop=true; 
} 
+1

플래그를 사용하는 경우 최소한 플래그를 변경하십시오. 그렇지 않으면'Task' 스레드는 결코 업데이트 된 값을 볼 수 없습니다. 그러나 대신'cancel' +'isCancelled'를 사용하는 것이 좋습니다 ... – fabian