[英]CompletableFuture.runAsync not finishing execution
我正在尝试使用CompletableFuture在JavaFX画布上写入大量像素,尽管没有引发异常,但我的方法似乎并未完成其任务。
我是异步编程的新手,不确定应该从哪里开始,但是我认为这可能可以从收集到的信息中解决。
我正在尝试使用:
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)方法非常琐碎,它们都非常小而简单。 因此,我相信嵌套循环是造成我麻烦的原因。
任何指导或意见都将不胜感激。
CompletableFuture
是Future
接口的实现,您希望将像素异步渲染到画布上,但是您不等待将来完成其计算,
CompletableFuture<Void> completableFuture =CompletableFuture.runAsync(() -> {
mandelbrot.increaseScale();
drawMandelbrot();
});
completableFuture.get();
CompletableFuture.get()的文档明确指出:等待异步计算完成,然后返回
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.