我想使用特定时间一个接一个地绘制矩形的数量。 我使用thread.sleep()方法,但它直接停止线程的工作,而不是恢复。
答案 0 :(得分:2)
在工作线程上使用Thread.sleep(long millis)。
答案 1 :(得分:2)
指定睡眠时的毫秒数:
Thread.sleep(2000); // two seconds
请注意,您需要处理InterruptedException
。
答案 2 :(得分:2)
你需要把睡眠放在另一个线程中。如果将睡眠放在GUI线程中,GUI将冻结。
编辑:我的不好,将此作为旁注注释留在此处。
答案 3 :(得分:1)
您可以使用Timer
和TimeTask
类。
请参阅此example。
答案 4 :(得分:0)
查看java executors。这些可以运行一段固定的时间。在每个执行器单元内,您可以绘制一个矩形。 (在EDT)This API文档顶部有一个有用的示例
答案 5 :(得分: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) {}
这将为您绘制一个无限数量的线程。只需修改此循环。
请参阅此处查看threads。