Libgdx - 如何同时运行2个线程

时间:2015-04-18 15:27:21

标签: java multithreading libgdx

我想在播放加载屏幕时生成一些文件。

我尝试使用Thread但它似乎不起作用。它先运行我的线程,然后在libgdx运行render()之前完成线程。

这是我的代码的工作方式: 在我的GameScreen类中:

private GenerateMap generateMap;
private Thread generate;

在我的gameScreen()中:

    this.game =  game;

    MapChars.setDimensions(100, 100);

    generateMap = new GenerateMap(10);
    generate = new Thread(generateMap);
    generate.start();

    camera = new OrthographicCamera(240, 400);
    camera.position.set(camera.viewportWidth/2, camera.viewportHeight/2, 0);
    camera.update();

    sideCam = new OrthographicCamera();
    sideCam.setToOrtho(true, camera.viewportWidth, camera.viewportHeight);
    sideCam.update();

    shapeRenderer = new ShapeRenderer();

和我的渲染()

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    size += delta;
    if(size >= 5)
        size = 0;

    if(!generateMap.isComplete()) {
        shapeRenderer.setProjectionMatrix(sideCam.combined);

        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        shapeRenderer.setColor(Color.GREEN);
        shapeRenderer.circle(50, 50, 10*size);
        shapeRenderer.end();
    }

有没有办法在同一时间渲染和穿线?

编辑:

这就是我的GenerateMap类的工作原理:

private void generate() {
    complete = false;
    // Do The file Generation...
    complete = true;

}

public boolean isComplete() {
    return complete;
}

@Override
public void run() {
    generate();

}

1 个答案:

答案 0 :(得分:0)

啊,我意识到我的问题是多么愚蠢。

我发现我的线程退出只需要大约0.03秒。 所以看起来好像什么也没发生过。

当我将时间段延长到大约10秒时,线程正常工作!