Java 对于双缓冲区,BufferStrategy show()方法需要50毫秒以上的时间才能完成,为什么速度这么慢?

Java 对于双缓冲区,BufferStrategy show()方法需要50毫秒以上的时间才能完成,为什么速度这么慢?,java,time,timer,bufferstrategy,Java,Time,Timer,Bufferstrategy,调用setup方法启动我拥有的计时器,我遇到的问题是render,它需要50毫秒才能完成。对于双缓冲区来说太长了 public void setup() { hB = new Rectangle(screenSize.width, screenSize.width); player.setRect(new Rectangle(player.getX(), player.getY(), 10, 10)); this.createBufferStrategy(2);

调用setup方法启动我拥有的计时器,我遇到的问题是render,它需要50毫秒才能完成。对于双缓冲区来说太长了

public void setup() {
    hB = new Rectangle(screenSize.width, screenSize.width);
    player.setRect(new Rectangle(player.getX(), player.getY(), 10, 10));
    this.createBufferStrategy(2);
    strategy = this.getBufferStrategy();
    start();
    startShooting();
    startRender();

}
此方法启动计时器任务,其唯一目的是调用render和大约60 fps

public void startRender() {
    startRen = new TimerTask() {
        public void run() {
            render();
        }
    };
    timer.schedule(startRen, 0, 16);
}
这是个麻烦的方法

public void render() {
    g = (Graphics2D) strategy.getDrawGraphics();
    g.setPaint(Color.WHITE);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setPaint(Color.black);
    g.drawString("Using " + player.getWeapon().getName(), 10, 20);
    g.drawString("Magazine " + mag, 10, 50);
    g.drawString("Number of AI " + AI.ai.size(), 10, 80);
    g.drawString("Bullets " + Bullet.bullets.size(), 10, 110);
    if (reloading) {
        g.setFont(new Font("Calibri", Font.BOLD, 100));
        g.setColor(Color.RED);
        g.drawString("RELOADING", screenSize.width / 2 - 250, screenSize.height / 2);
        g.setColor(Color.BLACK);
    }
    for (Bullet b : Bullet.bullets) {
        g.fillOval((int) b.getX(), (int) b.getY(), 4, 4);
    }
    for (AI a : AI.ai) {
        g.fill(a.getRect());
    }
    g.fill(player.getRect());
    g.dispose();
    strategy.show();
    Toolkit.getDefaultToolkit().sync();
}
唯一需要时间的是

strategy.show()
创建两个缓冲区需要50多毫秒,这是常见的吗?我必须重新设计我的游戏以避免计时器任务,而不是使用缓冲策略吗