0

我的讲师给了我一个任务,要求我编写一个多线程图形程序,其中一个球在 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();
4

1 回答 1

2

来自 Swing 的文档Timer

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

于 2012-12-11T10:58:51.223 回答