java多线程编程的一个问题

我在写一个球类软件游戏,要实现球根据路径设定自动越过障碍运动到终点。

在主函数的类中继承了JPanel,paint方法也在这个类中。
但是每个球都要做成一个线程,这样才能并发执行。球的线程怎么定义?是让球类实现Runnable接口还是让主函数的类继承接口???

如果是球类继承Runnable接口,那么主函数的paint方法就调用不到了。
如果让主函数的类实现Runnable接口,那么只能实现一个接口,我好矛盾。。。。
忘高人指点一二
不胜感激

让球类继承Runnable,run方法中update球的位置,然后给球类一个方法(比如getPosition())让主函数能获取此球的当前位置,在主函数里的paint里来获取球的位置画球。

启动线程:
Ball ball1 = new Ball();
Ball ball2 = new Ball();

Ball ball3 = new Ball();

new Thread(ball1).start();
new Thread(ball2).start();

new Thread(ball3).start();

这时候就有三个球类的线程同时运行了。

不知道这是不是你想要的。追问

while(true ){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.x++;
}
主函数中的repaint方法怎么会在每次x的值改变的时候被调用???

追答

在你改变x的值之后调用 revalidate() 方法(JComponent),它会告诉Java你改变了该Component的属性,repaint就会被自动调用了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-15
Runnable 是用来实现的 不是继承的 , Thread才是继承的,你要明白new Thread(new Runable) 来创建一个线程的 线程的调用顺序 是随机的 也可以是顺序执行的 如果是数序执行的话 就用Thread.join()个 方法