如何获得java fx线程访问权限

时间:2017-11-09 21:27:08

标签: java javafx

我试图通过集成javafx-d3库在我的java桌面应用程序中使用d3.js visuals。我正在使用像这样的代码

Runnable runnable = new Runnable()
{
   @Override
        public void run()
        {
            runDemoSuite(demoMenuBox, demoPreferenceBox);
        }
};

Platform.runLater(runnable);
browser = new JavaFxD3Browser(runnable, true);

问题是“runnable”不是“JavaFX Application Thread”。当我用“平台”运行它然后它变成“JavaFX应用程序线程”,其他它是常规线程。如何访问此线程并将其传递给JavaFxD3Browser函数。

1 个答案:

答案 0 :(得分:1)

  

"可运行"不是" JavaFX应用程序线程"

Runnable是一个允许抽象某些代码的接口。它不能是一个线程"。

目前尚不清楚您是否要使用RunnableThread,因此如果您想要包装任意一段代码,请使用:

Runnable runnable = () -> {
    Platform.runLater(() -> {
        // code here will run on the JavaFX Application Thread
    };
};

runnable对象,无论其调用者线程如何,都将在JavaFX应用程序线程上执行其包装代码。

  

如何获取此线程的访问权限

您可以获取名称为" JavaFX Application Thread"的Thread对象。如下:

public class TestApp extends Application {

    private Thread fxThread;

    @Override
    public void start(Stage stage) throws Exception {

        Platform.runLater(() -> {
            // fxThread is the JavaFX Application Thread after this call
            fxThread = Thread.currentThread();
        });
    }
}