我有一个掷骰子的程序,并使用一个新线程循环以更新图像并重新绘制。这是我的代码:
public int roll()
{
new Thread(
new Runnable() {
public void run() {
synchronized(o) {
o.notify();
for (int i = 0; i < 10; i++) {
image = randomImage();
repaint();
try {
Thread.sleep(100);
}
catch(InterruptedException ex) {
System.out.println("InterruptedException caught");
}
}
}
}
}
).start();
synchronized(o) {
try {
o.wait();
}
catch(InterruptedException ex) {
System.out.println("InterruptedException caught");
}
}
return rolled;
}
在我的另一堂课上,我有:
int rolled = dicePanel.roll();
label.setText("Rolled a + rolled");
问题是当前代码与同步,骰子图像不动画,但返回正确的 int 滚动。如果没有同步代码,图像将动画,但 roll 方法将返回 0 作为 int,因为它不会让其他线程完成。
有没有办法让图像代码每次循环并重新绘制,但要等到线程完成返回 int 滚动?