编辑:我创建了一个复制此问题的最小程序here
我的端点在draw(node)
的子类中调用Display
,随后调用redraw()
。然后它将帧保存到文件然后返回它以在浏览器中显示。
由于某种原因,端点在重绘帧之前返回响应,这导致第一个调用是空白背景,并且每个后续端点调用都是前一帧。
我做了一些调试,发现draw()
代码只在端点方法返回响应后执行,而不是我希望它作为方法调用的一部分执行。
我已尝试使用finished
变量使用while循环来阻止它,并且某些线程正在休眠但到目前为止没有任何工作。
我正在使用DropWizard框架和Processing lib v3.3.7
@Override
public void settings() {
size(S_WIDTH, S_HEIGHT);
noLoop();
}
@Override
public void draw() {
if (Objects.nonNull(currNode)) { //currNode starts as null
// Some drawing stuff
}
}
public void draw(Node node) {
this.currNode = node;
redraw();
}
答案 0 :(得分:0)
redraw()
启动一个新线程,因此锁定同步主线程解决了问题。