Java 在使用gameLoop时,实现多线程的正确方法是什么

Java 在使用gameLoop时,实现多线程的正确方法是什么,java,multithreading,swing,game-loop,Java,Multithreading,Swing,Game Loop,我正在做一个游戏,我根据键盘输入移动汽车图像。目前我正在使用此游戏循环: private void runGameLoop() { window.setVisible(); isRunning = true; final double FRAMES_PER_SECOND = 60; double timePerUpdate = 1000000000 / FRAMES_PER_SECOND; double timeFr

我正在做一个游戏,我根据键盘输入移动汽车图像。目前我正在使用此游戏循环:

private void runGameLoop() {
        window.setVisible();
        isRunning = true;
        final double FRAMES_PER_SECOND = 60;
        double timePerUpdate = 1000000000 / FRAMES_PER_SECOND;
        double timeFromLastUpdate = 0;
        long now;
        long last = System.nanoTime();
        while (isRunning) {
            now = System.nanoTime();
            timeFromLastUpdate += (now - last) / timePerUpdate;
            last = now;
            if(timeFromLastUpdate >= 1) {
                tick();
                render();
                timeFromLastUpdate--;
            }
        }
    }
勾选方法更新汽车图像位置,渲染方法将在屏幕上渲染图像(使用新位置)。 我希望将新图像位置的计算放在一个单独的线程上,因为目前计算时间太长,导致渲染延迟。有没有一种方法可以在实现游戏循环的同时使用多线程?
提前感谢。

也许你可以做一些类似Android的事情。在Android中,有一个主线程,就像你的游戏循环一样。它有一个用于从后台/并发线程发布到主线程的可运行程序的处理程序

因此,在每个循环周期中,主线程都会执行所有可运行的feom后台线程


请注意,计算不应在可运行程序中进行(在主线程中执行),只应在可运行程序中传递结果/更新内容。

否这是一个swing应用程序,并且