2012-12-11 21 views
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(); 
+2

为更好地帮助更快张贴[SSCCE(http://sscce.org/),短,可运行,可编译 – mKorbel

+1

不是SSCCE,大概这里的一切都可能是短裤暗而已,给你 – mKorbel

回答

2

从文档的摇摆Timer

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

+0

所以我正确地认为,如果我有6个球,每个都有自己的ActionListener,每个actionPreformed方法在它自己的线程中运行?感谢您的回复 –

+0

没有问题,只使用一个Swing Timer和球阵列 – mKorbel