我的讲师给了我一个任务,要求提供一个多线程图形程序,其中一个球在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();
答案 0 :(得分:2)
来自Swing Timer
的文档。
虽然所有
Timers
使用单个共享线程(由执行的第一个Timer
对象创建)执行等待,但Timers
的操作事件处理程序在另一个线程上执行 - 事件派发线程。这意味着Timers
的操作处理程序可以安全地对Swing组件执行操作。但是,这也意味着处理程序必须快速执行以保持GUI响应。