Platform.runLater가 현재 JavaFX 스레드에 있는지 확인하지 않는 이유는 무엇입니까?


Answers

함수를 호출 할 때 함수가 'runLater'라고 불리우는 경우 나중에 실행하도록 기대합니다.

구현은 이름 과 문서를 기반으로 올바른 작업을 수행하고있는 것으로 보입니다.

미래의 지정되지 않은 시간에 JavaFX 응용 프로그램 스레드에서 지정된 Runnable을 실행하십시오.

임의의 thread로부터 불려가는이 메소드는, 이벤트 큐에 Runnable를 송신 해, 즉시 호출 원에게 돌아옵니다. Runnables는 게시 된 순서대로 실행됩니다. runLater 메소드에 건네진 실행 가능 파일은 runnable가 runLater에 대한 후속 호출에 전달되기 전에 실행됩니다.

나중에 코드를 실행하지 않으려면 나중에 실행하도록 요청하지 마십시오. 이것이 바로 코드로 수행 한 작업입니다.

Question

JavaFX 8을 사용하는 경우 Platform.runLater 를 통해 GUI와의 상호 작용을 실행해야합니다. 그렇지 않으면 다른 스레드에서 실행 된 경우 예외가 발생합니다.

그러나 Platform.runLater 의 구현은 현재 JavaFX 스레드에 있는지 여부를 확인하지 않습니다.

나는 다음과 같은 방법을 썼다.

public static void runSafe(final Runnable runnable) {
    Objects.requireNonNull(runnable, "runnable");
    if (Platform.isFxApplicationThread()) {
        runnable.run();
    }
    else {
        Platform.runLater(runnable);
    }
}

따라서 fx 응용 프로그램이 아닌 스레드에서 실행될 수 없습니다.

기본 구현이 이러한 종류의 단락을 수행하지 않는 이유가 있습니까?