gpt4 book ai didi

java - CompletableFuture.runAsync 未完成执行

转载 作者:行者123 更新时间:2023-12-02 11:24:22 26 4
gpt4 key购买 nike

我正在尝试使用 CompletableFuture 在 JavaFX Canvas 上写入大量像素,尽管没有抛出异常,但我的方法似乎并未完成其任务。

我是异步编程的新手,不确定应该从哪里开始,但我认为根据我收集的信息,这可能会起作用。

我正在尝试使用:

CompletableFuture.runAsync(() -> {
mandelbrot.increaseScale();
drawMandelbrot();
});

调用:

private void drawMandelbrot() {
//RENDER

gc.clearRect(0,0,UISpecs.CANVAS_SIZE.getValue(),UISpecs.CANVAS_SIZE.getValue()); // clears canvas of any previously set pixels
gc.setFill(Color.BLACK); // set canvas background to be black
gc.fillRect(0,0,UISpecs.CANVAS_SIZE.getValue(),UISpecs.CANVAS_SIZE.getValue()); // set canvas background

for(double a = -2; a <= 2; a+=.001) {
for(double b = -2; b <= 2; b+=.001) {
c = new Complex(a,b);
col = pickColor(doIterations(c));
p.setColor(mandelbrot.getX(a), mandelbrot.getY(b), col);
}
}
} // drawMandelbrot()

我的complex(a,b)和pickColor(i)方法非常简单,两者都执行非常小且简单的操作。所以我相信我的嵌套循环是造成我麻烦的原因。

非常感谢任何指导或意见。

最佳答案

CompletableFutureFuture 接口(interface)的实现并且您希望像素异步渲染到 Canvas 上但您不会等待 future 完成其计算,

CompletableFuture<Void> completableFuture =CompletableFuture.runAsync(() -> {
mandelbrot.increaseScale();
drawMandelbrot();
});
completableFuture.get();

CompletableFuture.get() 的文档说得很清楚:等待异步计算完成然后返回

关于java - CompletableFuture.runAsync 未完成执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com