有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX在FX应用程序线程以外的其他线程中运行WebEngine

正如我在标题中所述,是否可以在FX应用程序线程之外的另一个线程中运行WebEngine

代码:

...
WebEngine webEngine = new WebEngine();

Thread thread = new Thread(() -> 
    webEngine.load("https://www.google.com"));
thread.setDaemon(true);
thread.start();
...

例外情况:

Exception in thread "Thread-6" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-6
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:279)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423)
    at javafx.scene.web.WebEngine.checkThread(WebEngine.java:1243)
    at javafx.scene.web.WebEngine.load(WebEngine.java:913)
    at sample.Main.lambda$start$0(Main.java:44)
    at java.lang.Thread.run(Thread.java:748)

共 (1) 个答案

  1. # 1 楼答案

    关于Oracle documentation这是不可能的

    WebEngine objects must be created and accessed solely from the JavaFX Application thread. This rule also applies to any DOM and JavaScript objects obtained from the WebEngine object.