从Aparapi线程返回

时间:2012-04-25 12:23:38

标签: java multithreading aparapi

我正在和Aparapi合作,我无法返回我想要的数据。 我发现Aparapi的工作方式类似于线程。

    private int calculateBlockLightLevel(final int x,final int y,final int z) {
    int blockType = world.getBlockTypeAt(x, z, y);

    //TODO Work out how to edit this, aka not Final!
    final int found[] = new int[]{0};
    Kernel kernel = new Kernel(){
        @Override public void run() {
            int blockLightLevel = getBlockLightLevelAt(x, y + 1, z);
            int highestSurroundingBlockLight = blockLightLevel;

            found[0]=highestSurroundingBlockLight;

            blockLightLevel = getBlockLightLevelAt(x - 1, y, z);
            if (blockLightLevel > highestSurroundingBlockLight) {
                highestSurroundingBlockLight = blockLightLevel;
                found[0]=highestSurroundingBlockLight;
            }
            blockLightLevel = getBlockLightLevelAt(x + 1, y, z);
            if (blockLightLevel > highestSurroundingBlockLight) {
                highestSurroundingBlockLight = blockLightLevel;
                found[0]=highestSurroundingBlockLight;
            }
            blockLightLevel = getBlockLightLevelAt(x, y, z - 1);
            if (blockLightLevel > highestSurroundingBlockLight) {
                highestSurroundingBlockLight = blockLightLevel;
                found[0]=highestSurroundingBlockLight;
            }
            blockLightLevel = getBlockLightLevelAt(x, y, z + 1);
            if (blockLightLevel > highestSurroundingBlockLight) {
                highestSurroundingBlockLight = blockLightLevel;
                found[0]=highestSurroundingBlockLight;
            }
            blockLightLevel = getBlockLightLevelAt(x, y - 1, z);
            if (blockLightLevel > highestSurroundingBlockLight) {
                highestSurroundingBlockLight = blockLightLevel;
                found[0]=highestSurroundingBlockLight;
            }

        }
     };
     kernel.execute(1);

     kernel.dispose();

    return Math.max(found[0] - Math.max(BLOCK_TRANSPARENCY.get(blockType), 1), 0);

}

从这段代码中我试图将找到的内容返回给我。

0 个答案:

没有答案