0

我想使用特定时间一个接一个地绘制矩形数量。我使用 thread.sleep() 方法,但它直接停止线程工作而不是恢复。

4

6 回答 6

2

在工作线程上使用Thread.sleep(long millis)代替。

于 2012-10-10T08:41:44.813 回答
2

指定睡眠的毫秒数:

Thread.sleep(2000); // two seconds

请注意,您需要处理InterruptedException.

于 2012-10-10T08:41:53.360 回答
2

您需要将睡眠放在另一个线程中。如果您将睡眠置于 GUI 线程中,则 GUI 将冻结。

编辑:我的错,将把它留在这里作为旁注评论。

于 2012-10-10T08:42:00.867 回答
1

你可以使用TimerTimeTask类。

请参阅此示例

于 2012-10-10T08:42:31.503 回答
0

看看java executors。这些可以运行固定的时间。然后,您可以在每个执行器单元内绘制一个矩形。(在EDT上)API 文档顶部有一个有用的示例

于 2012-10-10T08:42:31.033 回答
0

您应该在单独的thread. thread为睡眠的每个循环创建单独的。

这样,您可以将 的线程looping和 的线程分开drawing。因此,消除了冻结

public class RunTest implements Runnable{

    @Override
    public void run() {
        // codes for drawing
    }

}

在你的主要:

   try {
      while (true) {
        Thread t = new Thread(new RunTest());
        t.start();
      }
    } catch (InterruptedException iex) {}

这将为您的绘图创建无限数量的线程。只需修改此循环。

有关线程,请参见此处。

于 2012-10-10T08:46:04.783 回答