如何在不暂停整个程序的情况下暂停方法?

use*_*974 2 java time sleep timeout

所以我正在编写一个针对玩家玩Reversi/Othello的程序.我写了一个方法来制作一个片段翻转的短动画 -

public void flip(int row, int col, Graphics window)
{
Color a;
if (pieces[row][col]==1)
    a = Color.black;
else
    a = Color.white;
for ( int size = 90; size>0; size-=2)
{
    try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
    window.setColor(new Color( 0, 100, 0 ));
    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(11,1111); } catch (InterruptedException exc){}
    window.setColor(new Color( 0, 100, 0 ));
    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);
}
}
Run Code Online (Sandbox Code Playgroud)

它运行良好,看起来很棒,但问题是,由于thread.sleep暂停整个程序,它一次只能翻转一个.我可以做些什么来暂停该方法而不会中断程序的其余部分?

感谢大家.新线程有效,但现在我有一个不同的问题.翻转方法中的三种setcolor方法正在混淆.我认为这是因为有些线程将颜色设置为绿色,一些设置为黑色,一些设置为白色.我该如何解决?

Mic*_*ann 7

您应该在从主程序创建的专用线程中运行此方法.