필자는 분명히 FX 응용 프로그램 스레드에서 실행되는 간단한 JavaFX 응용 프로그램을 작성했습니다. 응용 프로그램은 고정 된 간격 후에 FX 응용 프로그램의 gui 컨트롤을 업데이트하기 위해 Platform.runLater()을 호출하는 별도 스레드 (FX 스레드가 아닌)에서 실행되는 무한 루프에서 백그라운드 처리를 필요로합니다. FX Gui 응용 프로그램을 닫으면 백그라운드 스레드가 실행을 계속합니다. FX 스레드 후 백그라운드 스레드를 종료하기 위해FX 스레드가 Java로 종료 된 경우 스레드를 종료하는 가장 효율적인 방법
은 지금 배경 스레드에서 while 루프에서 fxThread.isAlive()를 사용하고, 종료되었습니다. 이렇게하면 while 루프 조건이 false가 될 때 FX 스레드가 종료 되 자마자 백그라운드 스레드가 자동으로 종료됩니다.
이것은 나쁜 선택입니까? 동일한 작업을 수행하기위한 대안적이고 효율적인 방법은 무엇입니까? 확실히 최고의 솔루션 스레드가 fxThread.isAlive()
을 통과하고 시간 반면, 최악의 시나리오의 원인은, 당신의 fxThread
이 죽을 수도 들어가는 Platform.runLater
줄 것 그것 fxThread.isAlive()
를 호출하여
//imports
public class SimpleClockFX implements Application{
Thread fxThread;
//other variables
@Override
public void start(Stage primaryStage){
fxThread = Thread.currentThread();
//other stuff...
new Thread(()->{
//logic...
while(fxThread.isAlive()){
//logic...
Platform.runLater(()->{
//update gui controls
});
}
}).start();
}
아마도 FX 응용 프로그램을 종료하는 방법과 백그라운드 스레드를 시작하는 방법에 대한 질문은 아마도 http://codereview.stackexchange.com/ – ManoDestra
일까요? 또한 당신이'thread.setDaemon (true)'를 전달하지 않는다고 가정합니다. – AntJavaDev
질문에 변경 사항을 게시 하시길 바랍니다. 코멘트에 없습니다. – AntJavaDev