使用计时器的多线程图形?

时间:2012-12-11 10:53:12

标签: java multithreading swing timer java-2d

我的讲师给了我一个任务,要求提供一个多线程图形程序,其中一个球在jframe周围反弹。他希望每个球都有自己的线程。在标记时他告诉我计时器是多线程的,这是最好的方法。我为每个球使用了一个新线程,我知道这是昂贵的,但他告诉我们为每个球使用一个线程。计时器类是多线程的吗?

使用计时器

Ball b = new Ball(x, y);
BallMover bm = new BallMover(b)//adds the ball to a new instance of an actionListner
theTimer.addActionListener(bm);

使用线程

Ball b = new Ball(x,y);
BallMover bm = new BallMover(b);//adds the ball to a new instance of a Thread
bm.start();

1 个答案:

答案 0 :(得分:2)

来自Swing Timer的文档。

  

虽然所有Timers使用单个共享线程(由执行的第一个Timer对象创建)执行等待,但Timers的操作事件处理程序在另一个线程上执行 - 事件派发线程。这意味着Timers的操作处理程序可以安全地对Swing组件执行操作。但是,这也意味着处理程序必须快速执行以保持GUI响应。