我的setColor方法混淆了吗?

时间:2013-01-16 22:17:57

标签: java multithreading colors sleep

好的,我在前一段时间发布了一个问题,关于如何在不暂停整个程序的情况下暂停方法。这是上下文How do I make method pause without pausing the whole program?的链接。我得到的答案是创建一个新线程并从那里暂停它。 新线程有效,但现在我有一个不同的问题。由于我同时运行翻转5-6次,所以使用相同图形的三种setcolor方法正在混淆。我认为这是因为有些线程将颜色设置为绿色,一些设置为黑色,一些设置为白色。结果是片段在动画期间迅速改变颜色。我该如何解决这个问题?

  public void flip(int row, int col, Graphics window)
{
Color a;
    Color b = new Color(0, 100, 0);
if (pieces[row][col]==2)
    a = Color.black;
else
    a = Color.white;
for ( int size = 90; size>=0; size-=2)
{
    try { Thread.sleep(5,5555); } catch (InterruptedException exc){}
    window.setColor(b);
    window.fillRect(row*100+3, col*100+3, 94, 94);
    window.setColor(a);
    window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);

}
if (a==Color.black)
    a=Color.white;
else
    a=Color.black;
for ( int size = 0; size<=90; size+=2)
{
    try { Thread.sleep(5,5555); } catch (InterruptedException exc){}
    window.setColor(b);
    window.fillRect(row*100+3, col*100+3, 94, 94);
    window.setColor(a);
    window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
}

1 个答案:

答案 0 :(得分:0)

由于您现在使用的是所有更改相同值的线程,因此您需要了解同步。